home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Asm / AB3DIIsrc / source_4000 / OBJdrawHIRES.s < prev    next >
Encoding:
Text File  |  1996-07-05  |  64.4 KB  |  4,724 lines

  1.  
  2. currzone: dc.w 0
  3.  
  4. ty3d: dc.l -100*1024
  5. by3d: dc.l 1*1024
  6.  
  7. TOPOFROOM: dc.l 0
  8. BOTOFROOM: dc.l 0
  9. AFTERWATTOP: dc.l 0
  10. AFTERWATBOT: dc.l 0
  11. BEFOREWATTOP: dc.l 0
  12. BEFOREWATBOT: dc.l 0
  13. ROOMBACK: dc.l 0
  14.  
  15. objclipt: dc.w 0
  16. objclipb: dc.w 0
  17. rightclipb: dc.w 0
  18. leftclipb: dc.w 0
  19. whichdoing: dc.w 0
  20.  
  21. ObjDraw:
  22.  
  23.  move.w (a0)+,d0
  24.  cmp.w #1,d0
  25.  blt.s beforewat
  26.  beq.s afterwat
  27.  bgt.s fullroom
  28.  
  29. beforewat:
  30.  move.l BEFOREWATTOP,ty3d
  31.  move.l BEFOREWATBOT,by3d
  32.  move.b #1,whichdoing
  33.  bra.s donetopbot
  34.  
  35. afterwat:
  36.  move.l AFTERWATTOP,ty3d
  37.  move.l AFTERWATBOT,by3d
  38.  move.b #0,whichdoing
  39.  bra.s donetopbot
  40.  
  41. fullroom:
  42.  move.l TOPOFROOM(pc),ty3d
  43.  move.l BOTOFROOM(pc),by3d
  44.  move.b #0,whichdoing
  45.  
  46. donetopbot:
  47.  
  48. ; move.l (a0)+,by3d
  49. ; move.l (a0)+,ty3d
  50.  
  51.  movem.l d0-d7/a1-a6,-(a7)
  52.  
  53.  move.w rightclip,d0
  54.  sub.w leftclip,d0
  55.  subq #1,d0
  56.  ble doneallinfront 
  57.  
  58. ; CACHE_ON d6
  59.  
  60.  move.l ObjectData,a1
  61.  move.l #ObjRotated,a2
  62.  move.l #depthtable,a3
  63.  move.l a3,a4
  64.  move.w #79,d7
  65. emptytab:
  66.  move.l #$80010000,(a3)+
  67.  dbra d7,emptytab
  68.  
  69.  moveq #0,d0
  70. insertanobj
  71.  move.w (a1),d1
  72.  blt sortedall
  73.  move.w GraphicRoom(a1),d2
  74.  cmp.w currzone(pc),d2
  75.  beq.s itsinthiszone 
  76.  
  77. notinthiszone:
  78.  adda.w #64,a1
  79.  addq #1,d0
  80.  bra insertanobj
  81.  
  82. itsinthiszone:
  83.  
  84.  move.b DOUPPER,d4
  85.  move.b ObjInTop(a1),d3
  86.  eor.b d4,d3
  87.  bne.s notinthiszone
  88.  
  89.  move.w 2(a2,d1.w*8),d1    ; zpos
  90.  
  91.  move.l #depthtable-4,a4
  92. stillinfront:
  93.  addq #4,a4
  94.  cmp.w (a4),d1
  95.  blt stillinfront
  96.  move.l #enddepthtab-4,a5
  97. finishedshift
  98.  move.l -(a5),4(a5)
  99.  cmp.l a4,a5
  100.  bgt.s finishedshift
  101.  
  102.  move.w d1,(a4)
  103.  move.w d0,2(a4)
  104.  
  105.  adda.w #64,a1
  106.  addq #1,d0
  107.  
  108.  bra insertanobj
  109.  
  110. sortedall:
  111.  
  112.  move.l #depthtable,a3
  113.  
  114. gobackanddoanother
  115.  move.w (a3)+,d0
  116.  blt.s doneallinfront
  117.  
  118.  move.w (a3)+,d0
  119.  bsr DrawtheObject
  120.  bra gobackanddoanother
  121.  
  122. doneallinfront
  123.  
  124.  movem.l (a7)+,d0-d7/a1-a6
  125.  rts
  126.  
  127. depthtable: ds.l 80
  128. enddepthtab:
  129.  
  130. DrawtheObject:
  131.  
  132.  
  133.  movem.l d0-d7/a0-a6,-(a7)
  134.  
  135.   
  136.  move.l ObjectData,a0
  137.  move.l #ObjRotated,a1
  138.  asl.w #6,d0
  139.  adda.w d0,a0
  140.  
  141.  move.b ObjInTop(a0),IMINTHETOPDAD
  142.  
  143.  move.w (a0),d0
  144.  move.w 2(a1,d0.w*8),d1    ; z pos
  145.  
  146. ; Go through clip pts to see which
  147. ; apply.
  148.  
  149. ; move.w #0,d2    ; leftclip
  150. ; move.w #96,d3  ; rightclip
  151.  
  152. ; move.l EndOfClipPt,a6
  153. ;checkclips:
  154. ; subq #8,a6
  155. ; cmp.l #ClipTable,a6
  156. ; blt outofcheckclips
  157.  
  158. ; cmp.w 2(a6),d1
  159. ; bgt.s cantleft
  160. ; move.w (a6),d4
  161. ; cmp.w d4,d2
  162. ; bgt.s cantleft
  163. ; move.w d4,d2
  164. ;cantleft:
  165.  
  166. ; cmp.w 6(a6),d1
  167. ; bgt.s cantright
  168. ; move.w 4(a6),d4
  169. ; cmp.w d4,d3
  170. ; blt.s cantright
  171. ; move.w d4,d3
  172. ;cantright:
  173.  
  174. ;outofcheckclips:
  175.  
  176. ; move.w d2,leftclipb
  177. ; move.w d3,rightclipb
  178.  
  179.  move.w leftclip,leftclipb
  180.  move.w rightclip,rightclipb
  181.  
  182.  cmp.b #$ff,6(a0)
  183.  bne BitMapObj
  184.  
  185.  bsr PolygonObj
  186.  movem.l (a7)+,d0-d7/a0-a6
  187.  rts
  188.  
  189. glassobj:
  190.  move.w (a0)+,d0    ;pt num
  191.  move.w 2(a1,d0.w*8),d1
  192.  cmp.w #25,d1
  193.  ble objbehind
  194.  
  195.  move.w topclip,d2
  196.  move.w botclip,d3
  197.  
  198.  move.l ty3d,d6
  199.  sub.l yoff,d6
  200.  divs d1,d6
  201.  add.w MIDDLEY,d6
  202.  cmp.w d3,d6
  203.  bge objbehind
  204.  cmp.w d2,d6
  205.  bge.s .okobtc
  206.  move.w d2,d6
  207. .okobtc:
  208.  move.w d6,objclipt
  209.  
  210.  move.l by3d,d6
  211.  sub.l yoff,d6
  212.  divs d1,d6
  213.  add.w MIDDLEY,d6
  214.  cmp.w d2,d6
  215.  ble objbehind
  216.  cmp.w d3,d6
  217.  ble.s .okobbc
  218.  move.w d3,d6
  219. .okobbc:
  220.  move.w d6,objclipb
  221.  
  222.  move.l 4(a1,d0.w*8),d0
  223.  move.l (a0)+,d2    ; height
  224.  ext.l d2
  225.  asl.l #7,d2
  226.  sub.l yoff,d2
  227.  divs d1,d2    
  228.  add.w MIDDLEY,d2
  229.  
  230.  divs d1,d0
  231.  add.w MIDDLEX,d0    ;x pos of middle
  232.  
  233. ; Need to calculate:
  234. ; Width of object in pixels
  235. ; height of object in pixels
  236. ; horizontal constants
  237. ; vertical constants.
  238.  
  239.  move.l #consttab,a3
  240.  
  241.  moveq #0,d3
  242.  moveq #0,d4
  243.  move.b (a0)+,d3
  244.  move.b (a0)+,d4
  245.  asl.w #7,d3
  246.  asl.w #7,d4
  247.  divs d1,d3 ;width in pixels
  248.  divs d1,d4 ;height in pixels
  249.  sub.w d4,d2
  250.  sub.w d3,d0
  251.  cmp.w rightclipb,d0
  252.  bge objbehind
  253.  add.w d3,d3
  254.  cmp.w objclipb,d2
  255.  bge objbehind
  256.  
  257.  add.w d4,d4
  258.  
  259.  move.w d3,realwidth
  260.  move.w d4,realheight
  261.  
  262. * OBTAIN POINTERS TO HORIZ AND VERT
  263. * CONSTANTS FOR MOVING ACROSS AND
  264. * DOWN THE OBJECT GRAPHIC.
  265.  
  266.  move.w d1,d7
  267.  moveq #0,d6
  268.  move.b 6(a0),d6
  269.  add.w d6,d6
  270.  mulu d6,d7
  271.  move.b -2(a0),d6
  272.  divu d6,d7
  273.  swap d7
  274.  clr.w d7
  275.  swap d7
  276.  
  277.  lea (a3,d7.l*8),a2    ; pointer to
  278.             ; horiz const
  279.  move.w d1,d7
  280.  move.b 7(a0),d6
  281.  add.w d6,d6
  282.  mulu d6,d7
  283.  move.b -1(a0),d6
  284.  divu d6,d7
  285.  swap d7
  286.  clr.w d7
  287.  swap d7
  288.  lea (a3,d7.l*8),a3    ; pointer to
  289.              ; vertical c.
  290.  
  291. * CLIP OBJECT TO TOP AND BOTTOM
  292. * OF THE VISIBLE DISPLAY
  293.  
  294.  moveq #0,d7
  295.  cmp.w objclipt,d2
  296.  bge.s .objfitsontop
  297.  
  298.  sub.w objclipt,d2
  299.  add.w d2,d4    ;new height in
  300.         ;pixels
  301.  ble objbehind  ; nothing to draw
  302.  
  303.  move.w d2,d7
  304.  neg.w d7    ; factor to mult.
  305.          ; constants by
  306.          ; at top of obj.
  307.  move.w objclipt,d2
  308.  
  309. .objfitsontop:
  310.  
  311.  move.w objclipb,d6
  312.  sub.w d2,d6
  313.  cmp.w d6,d4
  314.  ble.s .objfitsonbot
  315.  
  316.  move.w d6,d4
  317.  
  318. .objfitsonbot:
  319.  
  320.  subq #1,d4
  321.  blt objbehind
  322.  
  323.  move.l #ontoscr,a6
  324.  move.l (a6,d2.w*4),d2
  325.  
  326.  add.l FASTBUFFER,d2
  327.  move.l d2,toppt
  328.  
  329.  move.l #WorkSpace,a5
  330.  move.l #glassball,a4
  331.  cmp.w leftclipb,d0
  332.  bge.s .okonleft
  333.  
  334.  sub.w leftclipb,d0
  335.  add.w d0,d3
  336.  ble objbehind
  337.  
  338.  move.w (a2),d1
  339.  move.w 2(a2),d2
  340.  neg.w d0
  341.  muls d0,d1
  342.  mulu d0,d2
  343.  swap d2
  344.  add.w d2,d1
  345.  asl.w #7,d1
  346.  lea (a5,d1.w),a5
  347.  lea (a4,d1.w),a4
  348.  
  349.  move.w leftclipb,d0
  350.  
  351. .okonleft:
  352.  
  353.  move.w d0,d6
  354.  add.w d3,d6
  355.  sub.w rightclipb,d6
  356.  blt.s .okrightside
  357.  
  358.  sub.w #1,d3
  359.  sub.w d6,d3
  360.  
  361. .okrightside:
  362.  
  363.  move.l #objintocop,a1
  364.  sub.l a1,a1
  365.  move.w d0,a1
  366.  add.w a1,a1
  367.  
  368.  move.w (a3),d5
  369.  move.w 2(a3),d6
  370.  muls d7,d5
  371.  mulu d7,d6
  372.  swap d6
  373.  add.w d6,d5
  374. ; add.w 2(a0),d5    ;d5 contains
  375.          ;top offset into
  376.          ;each strip.
  377.  add.l #$80000000,d5
  378.      
  379.  move.l (a2),d6
  380.  moveq.l #0,d7
  381.  move.l a5,midobj
  382.  move.l a4,midglass
  383.  move.l (a3),d2
  384.  swap d2
  385.  move.l #times128,a0
  386.  
  387.  movem.l d0-d7/a0-a6,-(a7)
  388.  
  389.  move.w d3,d1
  390.  ext.l d1
  391.  swap d1
  392.  move.w d4,d2
  393.  ext.l d2
  394.  swap d2
  395.  asr.l #6,d1
  396.  asr.l #6,d2
  397.  move.w d1,d5
  398.  move.w d2,d6
  399.  swap d1
  400.  swap d2
  401.  
  402.  muls #320,d2
  403.  
  404.  move.l #WorkSpace,a0
  405.  
  406.  move.w #63,d0
  407. .readinto:
  408.  swap d0
  409.  move.w #63,d0
  410.  move.l toppt(pc),a6
  411.  adda.w a1,a6
  412.  add.w d1,a1
  413.  add.w d5,d7
  414.  bcc.s .noadmoreh
  415.  addq #1,a1
  416. .noadmoreh:
  417.  swap d7
  418.  move.w #0,d7 
  419. .readintodown:
  420.  move.w (a6),d3
  421.  move.w d3,(a0)+
  422.  add.w d2,a6
  423.  add.w d6,d7
  424.  bcc.s .noadmore
  425.  adda.w #320,a6
  426. .noadmore:
  427.  dbra d0,.readintodown
  428.  swap d0
  429.  swap d7
  430.  dbra d0,.readinto
  431.  
  432.  
  433. ; Want to zoom an area d3*d4
  434. ; in size up to 64*64 in size.
  435. ; move.l #WorkSpace,a0
  436. ; move.l frompt,a2
  437. ; move.w #104*4,d3
  438. ; move.w #1,d6
  439. ;.ribl
  440. ; move.w #31,d0
  441. ;.readinto
  442. ; move.w #15,d1
  443. ; move.l a2,a1
  444. ;.readintodown
  445. ; move.w (a1),(a0)+
  446. ; adda.w d3,a1
  447. ; move.w (a1),(a0)+
  448. ; adda.w d3,a1
  449. ; move.w (a1),(a0)+
  450. ; adda.w d3,a1
  451. ; move.w (a1),(a0)+
  452. ; adda.w d3,a1
  453. ; dbra d1,.readintodown
  454. ;; add.w #256-128,a0
  455. ; addq #4,a2
  456. ; dbra d0,.readinto
  457. ; addq #4,a2
  458. ; dbra d6,.ribl
  459.  
  460.  movem.l (a7)+,d0-d7/a0-a6
  461.  
  462.  move.l #darkentab,a2
  463.  move.l toppt,d1
  464.  add.l a1,d1
  465.  move.l d1,toppt
  466.  move.l d6,a1
  467.  moveq #0,d6
  468.  
  469. .drawrightside:
  470.  swap d7
  471.  move.l midglass(pc),a4
  472.  adda.w (a0,d7.w*2),a4
  473.  swap d7
  474.  add.l a1,d7
  475.  move.l toppt(pc),a6
  476.  addq.l #1,toppt
  477.  
  478.  move.l d5,d1
  479.  move.w d4,-(a7)
  480.  swap d3
  481. .drawavertstrip
  482.  move.w (a4,d1.w*2),d3
  483.  blt.s .itsbackground
  484.  move.b (a5,d3.w*2),d6
  485.  move.b (a2,d6.w),(a6)
  486. .itsbackground
  487.  adda.w #320,a6
  488.  addx.l d2,d1
  489.  dbra d4,.drawavertstrip
  490.  swap d3
  491.  move.w (a7)+,d4
  492.  
  493.  dbra d3,.drawrightside
  494.  movem.l (a7)+,d0-d7/a0-a6
  495.  
  496.  rts
  497.  
  498. realwidth: dc.w 0
  499. realheight: dc.w 0
  500.  
  501. AUXX: dc.w 0
  502. AUXY: dc.w 0
  503.  
  504. midglass:
  505.  dc.l 0
  506. times128:
  507. val SET 0
  508.  REPT 100
  509.  dc.w val*128
  510. val SET val+1
  511.  ENDR
  512.  
  513. BRIGHTTOADD: dc.w 0
  514.  
  515. glareobj:
  516.  
  517.  
  518.  move.w (a0)+,d0    ;pt num
  519.  move.w 2(a1,d0.w*8),d1
  520.  cmp.w #25,d1
  521.  ble objbehind
  522.  
  523.  move.w topclip,d2
  524.  move.w botclip,d3
  525.  
  526.  move.l ty3d,d6
  527.  sub.l yoff,d6
  528.  divs d1,d6
  529.  add.w MIDDLEY,d6
  530.  cmp.w d3,d6
  531.  bge objbehind
  532.  cmp.w d2,d6
  533.  bge.s .okobtc
  534.  move.w d2,d6
  535. .okobtc:
  536.  move.w d6,objclipt
  537.  
  538.  move.l by3d,d6
  539.  sub.l yoff,d6
  540.  divs d1,d6
  541.  add.w MIDDLEY,d6
  542.  cmp.w d2,d6
  543.  ble objbehind
  544.  cmp.w d3,d6
  545.  ble.s .okobbc
  546.  move.w d3,d6
  547. .okobbc:
  548.  move.w d6,objclipb
  549.  
  550.  move.l 4(a1,d0.w*8),d0
  551.  move.w AUXX,d2
  552.  ext.l d2
  553.  asl.l #7,d2
  554.  add.l d2,d0
  555.  addq #2,a0
  556.  move.l TexturePal,a4
  557.  sub.l #512,a4
  558.  
  559.  move.w (a0)+,d2    ; height
  560.  add.w AUXY,d2
  561.  ext.l d2
  562.  asl.l #7,d2
  563.  sub.l yoff,d2
  564.  divs d1,d2    
  565.  add.w MIDDLEY,d2
  566.  
  567.  divs d1,d0
  568.  add.w MIDDLEX,d0    ;x pos of middle
  569.  
  570. ; Need to calculate:
  571. ; Width of object in pixels
  572. ; height of object in pixels
  573. ; horizontal constants
  574. ; vertical constants.
  575.  move.l LINKFILE,a6
  576.  lea FrameData(a6),a6
  577.  move.l #Objects,a5
  578.  move.w 2(a0),d7
  579.  neg.w d7
  580.  asl.w #4,d7
  581.  adda.w d7,a5
  582.  asl.w #4,d7
  583.  adda.w d7,a6
  584.  
  585.  move.w 4(a0),d7
  586.  lea (a6,d7.w*8),a6
  587.  
  588.  move.l #consttab,a3
  589.  
  590.  moveq #0,d3
  591.  moveq #0,d4
  592.  move.b (a0)+,d3
  593.  move.b (a0)+,d4
  594.  lsl.l #7,d3
  595.  lsl.l #7,d4
  596.  divs d1,d3 ;width in pixels
  597.  divs d1,d4 ;height in pixels
  598.  
  599.  sub.w d4,d2
  600.  sub.w d3,d0
  601.  cmp.w rightclipb,d0
  602.  bge objbehind
  603.  add.w d3,d3
  604.  cmp.w objclipb,d2
  605.  bge objbehind
  606.  
  607.  add.w d4,d4
  608.  
  609. * OBTAIN POINTERS TO HORIZ AND VERT
  610. * CONSTANTS FOR MOVING ACROSS AND
  611. * DOWN THE OBJECT GRAPHIC.
  612.  
  613.  move.l (a5)+,WAD_PTR
  614.  move.l (a5)+,PTR_PTR
  615.  
  616.  move.l (a6),d7
  617.  move.w d7,DOWN_STRIP
  618.  move.l PTR_PTR,a5
  619.  swap d7
  620.  asl.w #2,d7
  621.  adda.w d7,a5
  622.  
  623.  move.w d1,d7
  624.  moveq #0,d6
  625.  move.w 4(a6),d6
  626.  add.w d6,d6
  627.  subq #1,d6
  628.  mulu d6,d7
  629.  moveq #0,d6
  630.  move.b -2(a0),d6
  631.  beq objbehind
  632.  divu d6,d7
  633.  swap d7
  634.  clr.w d7
  635.  swap d7
  636.  lea (a3,d7.l*8),a2    ; pointer to
  637.             ; horiz const
  638.  move.w d1,d7
  639.  move.w 6(a6),d6
  640.  add.w d6,d6
  641.  subq #1,d6
  642.  mulu d6,d7
  643.  moveq #0,d6
  644.  move.b -1(a0),d6
  645.  beq objbehind
  646.  divu d6,d7
  647.  swap d7
  648.  clr.w d7
  649.  swap d7
  650.  lea (a3,d7.l*8),a3    ; pointer to
  651.              ; vertical c.
  652.  
  653. * CLIP OBJECT TO TOP AND BOTTOM
  654. * OF THE VISIBLE DISPLAY
  655.  
  656.  moveq #0,d7
  657.  cmp.w objclipt,d2
  658.  bge.s objfitsontopGLARE
  659.  
  660.  sub.w objclipt,d2
  661.  add.w d2,d4    ;new height in
  662.         ;pixels
  663.  ble objbehind  ; nothing to draw
  664.  
  665.  move.w d2,d7
  666.  neg.w d7    ; factor to mult.
  667.          ; constants by
  668.          ; at top of obj.
  669.  move.w objclipt,d2
  670.  
  671. objfitsontopGLARE:
  672.  
  673.  move.w objclipb,d6
  674.  sub.w d2,d6
  675.  cmp.w d6,d4
  676.  ble.s objfitsonbotGLARE
  677.  
  678.  move.w d6,d4
  679.  
  680. objfitsonbotGLARE:
  681.  
  682.  subq #1,d4
  683.  blt objbehind
  684.  
  685.  move.l #ontoscr,a6
  686.  move.l (a6,d2.w*4),d2
  687.  add.l FASTBUFFER,d2
  688.  move.l d2,toppt
  689.  
  690.  cmp.w leftclipb,d0
  691.  bge.s okonleftGLARE
  692.  
  693.  sub.w leftclipb,d0
  694.  add.w d0,d3
  695.  ble objbehind
  696.  
  697.  move.w (a2),d1
  698.  move.w 2(a2),d2
  699.  neg.w d0
  700.  muls d0,d1
  701.  mulu d0,d2
  702.  swap d2
  703.  add.w d2,d1
  704.  lea (a5,d1.w*4),a5
  705.  
  706.  move.w leftclipb,d0
  707.  
  708. okonleftGLARE:
  709.  
  710.  move.w d0,d6
  711.  add.w d3,d6
  712.  sub.w rightclipb,d6
  713.  blt.s okrightsideGLARE
  714.  
  715.  sub.w #1,d3
  716.  sub.w d6,d3
  717.  
  718. okrightsideGLARE:
  719.  
  720.  ext.l d0
  721.  add.l d0,toppt
  722.  
  723.  
  724.  move.w (a3),d5
  725.  move.w 2(a3),d6
  726.  muls d7,d5
  727.  mulu d7,d6
  728.  swap d6
  729.  add.w d6,d5
  730.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  731.          ;top offset into
  732.          ;each strip.
  733.  add.l #$80000000,d5
  734.      
  735.  move.l (a2),a2
  736.  moveq.l #0,d7
  737.  move.l a5,midobj
  738.  move.l (a3),d2
  739.  swap d2
  740.  
  741.  move.l #0,a1
  742.  
  743.  
  744. drawrightsideGLARE:
  745.  swap d7
  746.  move.l midobj(pc),a5
  747.  lea (a5,d7.w*4),a5
  748.  swap d7
  749.  add.l a2,d7
  750.  move.l WAD_PTR(PC),a0
  751.  
  752.  move.l toppt(pc),a6
  753.  adda.w a1,a6
  754.  addq #1,a1
  755.  move.l (a5),d1
  756.  beq blankstripGLARE
  757.  
  758.  and.l #$ffffff,d1
  759.  add.l d1,a0
  760.  
  761.  move.b (a5),d1
  762.  cmp.b #1,d1
  763.  bgt.s ThirdThirdGLARE
  764.  beq.s SecThirdGLARE
  765.  move.l d5,d6
  766.  move.l d5,d1
  767.  move.w d4,-(a7)
  768. .drawavertstrip
  769.  move.b 1(a0,d1.w*2),d0
  770.  and.b #%00011111,d0
  771.  beq.s .dontplotthisoneitsblack
  772.  lsl.w #8,d0
  773.  add.w d0,d0
  774.  move.b (a6),d0
  775.  move.b (a4,d0.w),(a6)
  776. .dontplotthisoneitsblack:
  777.  adda.w #320,a6
  778.  add.l d2,d6
  779.  addx.w d2,d1
  780.  dbra d4,.drawavertstrip
  781.  move.w (a7)+,d4
  782. blankstripGLARE:
  783.  dbra d3,drawrightsideGLARE
  784.  bra objbehind
  785.  
  786. SecThirdGLARE:
  787.  move.l d5,d1
  788.  move.l d5,d6
  789.  move.w d4,-(a7)
  790. .drawavertstrip
  791.  move.w (a0,d1.w*2),d0
  792.  lsr.w #5,d0
  793.  and.w #%11111,d0
  794.  beq.s .dontplotthisoneitsblack
  795.  lsl.w #8,d0
  796.  add.w d0,d0
  797.  move.b (a6),d0
  798.  move.b (a4,d0.w),(a6)
  799. .dontplotthisoneitsblack:
  800.  adda.w #320,a6
  801.  add.l d2,d6
  802.  addx.w d2,d1
  803.  dbra d4,.drawavertstrip
  804.  move.w (a7)+,d4
  805.  dbra d3,drawrightsideGLARE
  806.  bra objbehind
  807.  
  808. ThirdThirdGLARE:
  809.  move.l d5,d1
  810.  move.l d5,d6
  811.  move.w d4,-(a7)
  812. .drawavertstrip
  813.  move.b (a0,d1.w*2),d0
  814.  lsr.b #2,d0
  815.  and.b #%11111,d0
  816.  beq.s .dontplotthisoneitsblack
  817.  lsl.w #8,d0
  818.  add.w d0,d0
  819.  move.b (a6),d0
  820.  move.b (a4,d0.w),(a6)
  821. .dontplotthisoneitsblack:
  822.  adda.w #320,a6
  823.  add.l d2,d6
  824.  addx.w d2,d1
  825.  dbra d4,.drawavertstrip
  826.  move.w (a7)+,d4
  827.  dbra d3,drawrightsideGLARE
  828.  
  829.  movem.l (a7)+,d0-d7/a0-a6
  830.  rts
  831.  
  832.  
  833.  
  834. BitMapObj:
  835.  move.l #0,AUXX
  836.  
  837.  cmp.b #3,16(a0)
  838.  bne.s .NOTAUX
  839.  
  840.  move.w auxxoff(a0),AUXX
  841.  move.w auxyoff(a0),AUXY
  842.   
  843. .NOTAUX:
  844.  
  845.  tst.l 8(a0)
  846.  blt glareobj
  847.  
  848.  move.w Facing(a0),FACINGANG
  849.  
  850.  move.w (a0)+,d0    ;pt num
  851.  
  852.  move.l ObjectPoints,a4
  853.  
  854.  move.w (a4,d0.w*8),thisxpos
  855.  move.w 4(a4,d0.w*8),thiszpos
  856.  
  857.  move.w 2(a1,d0.w*8),d1
  858.  cmp.w #25,d1
  859.  ble objbehind
  860.  
  861.  move.w topclip,d2
  862.  move.w botclip,d3
  863.  
  864.  move.l ty3d,d6
  865.  sub.l yoff,d6
  866.  divs d1,d6
  867.  add.w MIDDLEY,d6
  868.  cmp.w d3,d6
  869.  bge objbehind
  870.  cmp.w d2,d6
  871.  bge.s .okobtc
  872.  move.w d2,d6
  873. .okobtc:
  874.  move.w d6,objclipt
  875.  
  876.  move.l by3d,d6
  877.  sub.l yoff,d6
  878.  divs d1,d6
  879.  add.w MIDDLEY,d6
  880.  cmp.w d2,d6
  881.  ble objbehind
  882.  cmp.w d3,d6
  883.  ble.s .okobbc
  884.  move.w d3,d6
  885. .okobbc:
  886.  move.w d6,objclipb
  887.  
  888.  move.l 4(a1,d0.w*8),d0
  889.  move.w AUXX,d2
  890.  ext.l d2
  891.  asl.l #7,d2
  892.  add.l d2,d0
  893.  move.w d1,d6
  894.  asr.w #6,d6
  895.  add.w (a0)+,d6
  896.  move.w d6,BRIGHTTOADD
  897.  
  898.  bge.s brighttoonot
  899.  moveq #0,d6
  900. brighttoonot
  901.  sub.l a4,a4
  902.  move.w objscalecols(pc,d6.w*2),a4
  903.  bra pastobjscale
  904.  
  905. objscalecols:
  906.  dcb.w  1,64*0
  907.  dcb.w  2,64*1
  908.  dcb.w  2,64*2
  909.  dcb.w  2,64*3
  910.  dcb.w  2,64*4
  911.  dcb.w  2,64*5
  912.  dcb.w  2,64*6
  913.  dcb.w  2,64*7
  914.  dcb.w  2,64*8
  915.  dcb.w  2,64*9
  916.  dcb.w  2,64*10
  917.  dcb.w  2,64*11
  918.  dcb.w  2,64*12
  919.  dcb.w  2,64*13
  920.  dcb.w  2,64*14
  921.  dcb.w  2,64*15
  922.  dcb.w  2,64*16
  923.  dcb.w  2,64*17
  924.  dcb.w  2,64*18
  925.  dcb.w  2,64*19
  926.  dcb.w  2,64*20
  927.  dcb.w  2,64*21
  928.  dcb.w  2,64*22
  929.  dcb.w  2,64*23
  930.  dcb.w  2,64*24
  931.  dcb.w  2,64*25
  932.  dcb.w  2,64*26
  933.  dcb.w  2,64*27
  934.  dcb.w  2,64*28
  935.  dcb.w  2,64*29
  936.  dcb.w  2,64*30
  937.  dcb.w  20,64*31
  938.  
  939. WHICHLIGHTPAL: dc.w 0
  940. FLIPIT: dc.w 0
  941. FLIPPEDIT: dc.w 0
  942. LIGHTIT: dc.w 0
  943. ADDITIVE: dc.w 0
  944. BASEPAL: dc.l 0
  945.  
  946. pastobjscale:
  947.  
  948.  move.w (a0)+,d2    ; height
  949.  add.w AUXY,d2
  950.  ext.l d2
  951.  asl.l #7,d2
  952.  sub.l yoff,d2
  953.  divs d1,d2    
  954.  add.w MIDDLEY,d2
  955.  
  956.  
  957.  divs d1,d0
  958.  add.w MIDDLEX,d0    ;x pos of middle
  959.  
  960. ; Need to calculate:
  961. ; Width of object in pixels
  962. ; height of object in pixels
  963. ; horizontal constants
  964. ; vertical constants.
  965.  
  966.  move.l LINKFILE,a6
  967.  lea FrameData(a6),a6
  968.  move.l #Objects,a5
  969.  move.w 2(a0),d7
  970.  asl.w #4,d7
  971.  adda.w d7,a5
  972.  asl.w #4,d7
  973.  adda.w d7,a6
  974.  
  975.  clr.b LIGHTIT
  976.  clr.b ADDITIVE
  977.  move.b 4(a0),d7
  978.  btst #7,d7
  979.  sne FLIPIT
  980.  and.b #127,d7
  981.  sub.b #2,d7
  982.  blt.s .NOTALIGHT
  983.  
  984.  cmp.b #4,d7
  985.  blt.s .isalight
  986.  
  987.  st ADDITIVE
  988.  bra.s .NOTALIGHT
  989. .isalight:
  990.  
  991.  st LIGHTIT
  992.  move.b d7,WHICHLIGHTPAL
  993.  
  994. .NOTALIGHT:
  995.  
  996.  moveq #0,d7
  997.  move.b 5(a0),d7
  998.  lea (a6,d7.w*8),a6
  999.  
  1000.  move.l #consttab,a3
  1001.  
  1002.  moveq #0,d3
  1003.  moveq #0,d4
  1004.  move.b (a0)+,d3
  1005.  move.b (a0)+,d4
  1006.  lsl.l #7,d3
  1007.  lsl.l #7,d4
  1008.  divs d1,d3 ;width in pixels
  1009.  divs d1,d4 ;height in pixels
  1010.  
  1011.  sub.w d4,d2
  1012.  sub.w d3,d0
  1013.  cmp.w rightclipb,d0
  1014.  bge objbehind
  1015.  add.w d3,d3
  1016.  cmp.w objclipb,d2
  1017.  bge objbehind
  1018.  
  1019.  add.w d4,d4
  1020.  
  1021. * OBTAIN POINTERS TO HORIZ AND VERT
  1022. * CONSTANTS FOR MOVING ACROSS AND
  1023. * DOWN THE OBJECT GRAPHIC.
  1024.  
  1025.  move.l (a5)+,WAD_PTR
  1026.  move.l (a5)+,PTR_PTR
  1027.  add.l 4(a5),a4
  1028.  move.l 4(a5),BASEPAL
  1029.  
  1030.  move.l (a6),d7
  1031.  move.w d7,DOWN_STRIP
  1032.  move.l PTR_PTR,a5
  1033.  
  1034.  tst.b FLIPIT
  1035.  beq.s .nfl1
  1036.  
  1037.  move.w 4(a6),d6
  1038.  add.w d6,d6
  1039.  subq #1,d6
  1040.  lea (a5,d6.w*4),a5
  1041.  
  1042. .nfl1:
  1043.  swap d7
  1044.  asl.w #2,d7
  1045.  adda.w d7,a5
  1046. fl1:
  1047.  
  1048.  move.w d1,d7
  1049.  moveq #0,d6
  1050.  move.w 4(a6),d6
  1051.  add.w d6,d6
  1052.  subq #1,d6
  1053.  mulu d6,d7
  1054.  moveq #0,d6
  1055.  move.b -2(a0),d6
  1056.  beq objbehind
  1057.  divu d6,d7
  1058.  swap d7
  1059.  clr.w d7
  1060.  swap d7
  1061.  lea (a3,d7.l*8),a2    ; pointer to
  1062.             ; horiz const
  1063.  move.w d1,d7
  1064.  move.w 6(a6),d6
  1065.  add.w d6,d6
  1066.  subq #1,d6
  1067.  mulu d6,d7
  1068.  moveq #0,d6
  1069.  move.b -1(a0),d6
  1070.  beq objbehind
  1071.  divu d6,d7
  1072.  swap d7
  1073.  clr.w d7
  1074.  swap d7
  1075.  lea (a3,d7.l*8),a3    ; pointer to
  1076.              ; vertical c.
  1077.  
  1078. * CLIP OBJECT TO TOP AND BOTTOM
  1079. * OF THE VISIBLE DISPLAY
  1080.  
  1081.  moveq #0,d7
  1082.  cmp.w objclipt,d2
  1083.  bge.s objfitsontop
  1084.  
  1085.  sub.w objclipt,d2
  1086.  add.w d2,d4    ;new height in
  1087.         ;pixels
  1088.  ble objbehind  ; nothing to draw
  1089.  
  1090.  move.w d2,d7
  1091.  neg.w d7    ; factor to mult.
  1092.          ; constants by
  1093.          ; at top of obj.
  1094.  move.w objclipt,d2
  1095.  
  1096. objfitsontop:
  1097.  
  1098.  move.w objclipb,d6
  1099.  sub.w d2,d6
  1100.  cmp.w d6,d4
  1101.  ble.s objfitsonbot
  1102.  
  1103.  move.w d6,d4
  1104.  
  1105. objfitsonbot:
  1106.  
  1107.  subq #1,d4
  1108.  blt objbehind
  1109.  
  1110.  move.l #ontoscr,a6
  1111.  move.l (a6,d2.w*4),d2
  1112.  add.l FASTBUFFER,d2
  1113.  move.l d2,toppt
  1114.  
  1115.  cmp.w leftclipb,d0
  1116.  bge.s okonleft
  1117.  
  1118.  sub.w leftclipb,d0
  1119.  add.w d0,d3
  1120.  ble objbehind
  1121.  
  1122.  move.w (a2),d1
  1123.  move.w 2(a2),d2
  1124.  neg.w d0
  1125.  muls d0,d1
  1126.  mulu d0,d2
  1127.  swap d2
  1128.  add.w d2,d1
  1129.  move.w leftclipb,d0
  1130.  
  1131.  asl.w #2,d1
  1132.  tst.b FLIPIT
  1133.  beq.s .nfl2
  1134.  
  1135.  suba.w d1,a5
  1136.  suba.w d1,a5
  1137.  
  1138. .nfl2:
  1139.  
  1140.  adda.w d1,a5 
  1141.  
  1142. okonleft:
  1143.  
  1144.  move.w d0,d6
  1145.  add.w d3,d6
  1146.  sub.w rightclipb,d6
  1147.  blt.s okrightside
  1148.  
  1149.  sub.w #1,d3
  1150.  sub.w d6,d3
  1151.  
  1152. okrightside:
  1153.  
  1154.  ext.l d0
  1155.  add.l d0,toppt
  1156.  
  1157.  move.w (a3),d5
  1158.  move.w 2(a3),d6
  1159.  muls d7,d5
  1160.  mulu d7,d6
  1161.  swap d6
  1162.  add.w d6,d5
  1163.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  1164.          ;top offset into
  1165.          ;each strip.
  1166.  add.l #$80000000,d5
  1167.      
  1168.  move.l (a2),d7
  1169.  tst.b FLIPIT
  1170.  beq.s .nfl3
  1171.  neg.l d7
  1172. .nfl3:
  1173.  move.l d7,a2
  1174.  moveq.l #0,d7
  1175.  move.l a5,midobj
  1176.  move.l (a3),d2
  1177.  swap d2
  1178.  
  1179.  move.l #0,a1
  1180.  
  1181.  tst.b LIGHTIT
  1182.  bne DRAWITLIGHTED
  1183.  
  1184.  tst.b ADDITIVE
  1185.  bne DRAWITADDED
  1186.  
  1187. drawrightside:
  1188.  swap d7
  1189.  move.l midobj(pc),a5
  1190.  lea (a5,d7.w*4),a5
  1191.  swap d7
  1192.  add.l a2,d7
  1193.  move.l WAD_PTR(PC),a0
  1194.  
  1195.  move.l toppt(pc),a6
  1196.  adda.w a1,a6
  1197.  addq #1,a1
  1198.  move.l (a5),d1
  1199.  beq blankstrip
  1200.  
  1201.  and.l #$ffffff,d1
  1202.  add.l d1,a0
  1203.  
  1204.  move.b (a5),d1
  1205.  cmp.b #1,d1
  1206.  bgt.s ThirdThird
  1207.  beq.s SecThird
  1208.  move.l d5,d6
  1209.  move.l d5,d1
  1210.  move.w d4,-(a7)
  1211. .drawavertstrip
  1212.  move.b 1(a0,d1.w*2),d0
  1213.  and.b #%00011111,d0
  1214.  beq.s .dontplotthisoneitsblack
  1215.  move.b (a4,d0.w*2),(a6)
  1216. .dontplotthisoneitsblack:
  1217.  adda.w #320,a6
  1218.  add.l d2,d6
  1219.  addx.w d2,d1
  1220.  dbra d4,.drawavertstrip
  1221.  move.w (a7)+,d4
  1222. blankstrip:
  1223.  dbra d3,drawrightside
  1224.  bra.s objbehind
  1225.  
  1226. SecThird:
  1227.  move.l d5,d1
  1228.  move.l d5,d6
  1229.  move.w d4,-(a7)
  1230. .drawavertstrip
  1231.  move.w (a0,d1.w*2),d0
  1232.  lsr.w #5,d0
  1233.  and.w #%11111,d0
  1234.  beq.s .dontplotthisoneitsblack
  1235.  move.b (a4,d0.w*2),(a6)
  1236. .dontplotthisoneitsblack:
  1237.  adda.w #320,a6
  1238.  add.l d2,d6
  1239.  addx.w d2,d1
  1240.  dbra d4,.drawavertstrip
  1241.  move.w (a7)+,d4
  1242.  dbra d3,drawrightside
  1243.  bra.s objbehind
  1244.  
  1245. ThirdThird:
  1246.  move.l d5,d1
  1247.  move.l d5,d6
  1248.  move.w d4,-(a7)
  1249. .drawavertstrip
  1250.  move.b (a0,d1.w*2),d0
  1251.  lsr.b #2,d0
  1252.  and.b #%11111,d0
  1253.  beq.s .dontplotthisoneitsblack
  1254.  move.b (a4,d0.w*2),(a6)
  1255. .dontplotthisoneitsblack:
  1256.  adda.w #320,a6
  1257.  add.l d2,d6
  1258.  addx.w d2,d1
  1259.  dbra d4,.drawavertstrip
  1260.  move.w (a7)+,d4
  1261.  dbra d3,drawrightside
  1262.  
  1263. objbehind:
  1264.  movem.l (a7)+,d0-d7/a0-a6
  1265.  rts
  1266.  
  1267. DRAWITADDED:
  1268.  move.l BASEPAL,a4
  1269.  
  1270. drawrightsideADD:
  1271.  swap d7
  1272.  move.l midobj(pc),a5
  1273.  lea (a5,d7.w*4),a5
  1274.  swap d7
  1275.  add.l a2,d7
  1276.  move.l WAD_PTR(PC),a0
  1277.  
  1278.  move.l toppt(pc),a6
  1279.  adda.w a1,a6
  1280.  addq #1,a1
  1281.  move.l (a5),d1
  1282.  beq blankstripADD
  1283.  
  1284.  and.l #$ffffff,d1
  1285.  add.l d1,a0
  1286.  
  1287.  move.b (a5),d1
  1288.  cmp.b #1,d1
  1289.  bgt.s ThirdThirdADD
  1290.  beq.s SecThirdADD
  1291.  move.l d5,d6
  1292.  move.l d5,d1
  1293.  move.w d4,-(a7)
  1294. .drawavertstrip
  1295.  move.b 1(a0,d1.w*2),d0
  1296.  and.b #%00011111,d0
  1297.  lsl.w #8,d0
  1298.  move.b (a6),d0
  1299.  move.b (a4,d0.w),(a6)
  1300.  adda.w #320,a6
  1301.  add.l d2,d6
  1302.  addx.w d2,d1
  1303.  dbra d4,.drawavertstrip
  1304.  move.w (a7)+,d4
  1305. blankstripADD:
  1306.  dbra d3,drawrightsideADD
  1307.  bra objbehind
  1308.  
  1309. SecThirdADD:
  1310.  move.l d5,d1
  1311.  move.l d5,d6
  1312.  move.w d4,-(a7)
  1313. .drawavertstrip
  1314.  move.w (a0,d1.w*2),d0
  1315.  lsr.w #5,d0
  1316.  and.w #%11111,d0
  1317.  lsl.w #8,d0
  1318.  move.b (a6),d0
  1319.  move.b (a4,d0.w),(a6)
  1320.  adda.w #320,a6
  1321.  add.l d2,d6
  1322.  addx.w d2,d1
  1323.  dbra d4,.drawavertstrip
  1324.  move.w (a7)+,d4
  1325.  dbra d3,drawrightsideADD
  1326.  bra objbehind
  1327.  
  1328. ThirdThirdADD:
  1329.  move.l d5,d1
  1330.  move.l d5,d6
  1331.  move.w d4,-(a7)
  1332. .drawavertstrip
  1333.  move.b (a0,d1.w*2),d0
  1334.  lsr.b #2,d0
  1335.  and.b #%11111,d0
  1336.  lsl.w #8,d0
  1337.  move.b (a6),d0
  1338.  move.b (a4,d0.w),(a6)
  1339. .dontplotthisoneitsblack:
  1340.  adda.w #320,a6
  1341.  add.l d2,d6
  1342.  addx.w d2,d1
  1343.  dbra d4,.drawavertstrip
  1344.  move.w (a7)+,d4
  1345.  dbra d3,drawrightsideADD
  1346.  
  1347.  bra objbehind
  1348.  
  1349. DRAWITLIGHTED:
  1350.  
  1351. ; Make up lighting values
  1352.  
  1353.  movem.l d0-d7/a0-a6,-(a7)
  1354.  
  1355.  move.l #ANGLEBRIGHTS,a2
  1356.  move.l #$80808080,(a2)
  1357.  move.l #$80808080,4(a2)
  1358.  move.l #$80808080,8(a2)
  1359.  move.l #$80808080,12(a2)
  1360.  move.l #$80808080,16(a2)
  1361.  move.l #$80808080,20(a2)
  1362.  move.l #$80808080,24(a2)
  1363.  move.l #$80808080,28(a2)
  1364.  
  1365.  move.l #$80808080,32(a2)
  1366.  move.l #$80808080,36(a2)
  1367.  move.l #$80808080,40(a2)
  1368.  move.l #$80808080,44(a2)
  1369.  move.l #$80808080,48(a2)
  1370.  move.l #$80808080,52(a2)
  1371.  move.l #$80808080,56(a2)
  1372.  move.l #$80808080,60(a2)
  1373.  
  1374.  move.w currzone(pc),d0
  1375.  bsr CALCBRIGHTSINZONE
  1376.  
  1377.  move.l #ANGLEBRIGHTS+32,a2
  1378.  
  1379. ; Now do the brightnesses of surrounding
  1380. ; zones:
  1381.  
  1382. ; move.l FloorLines,a1
  1383. ; move.w currzone,d0
  1384. ; move.l ZoneAdds,a4
  1385. ; move.l (a4,d0.w*4),a4
  1386. ; add.l LEVELDATA,a4
  1387. ; move.l a4,a5
  1388. ; adda.w ToExitList(a4),a5
  1389. ;.doallwalls
  1390. ; move.w (a5)+,d0
  1391. ; blt .nomorewalls
  1392. ;
  1393. ; asl.w #4,d0
  1394. ; lea (a1,d0.w),a3
  1395. ; move.w 8(a3),d0
  1396. ; blt.s .solidwall ; a wall not an exit.
  1397. ; movem.l a1/a4/a5,-(a7) 
  1398. ; bsr CALCBRIGHTSINZONE
  1399. ; movem.l (a7)+,a1/a4/a5
  1400. ; bra .doallwalls
  1401. ;
  1402. ;.solidwall:
  1403. ; move.w 4(a3),d1
  1404. ; move.w 6(a3),d2
  1405. ; move.w oldx,newx
  1406. ; move.w oldz,newz
  1407. ; sub.w d2,newx
  1408. ; add.w d1,newz
  1409. ;
  1410. ; movem.l d0-d7/a0-a6,-(a7)
  1411. ; jsr HeadTowardsAng
  1412. ; movem.l (a7)+,d0-d7/a0-a6
  1413. ; move.w AngRet,d1
  1414. ; neg.w d1
  1415. ; and.w #8191,d1
  1416. ; asr.w #8,d1
  1417. ; asr.w #1,d1
  1418.  
  1419. ; move.b #48,(a2,d1.w)
  1420. ; move.b #48,16(a2,d1.w)
  1421. ; bra .doallwalls 
  1422. ;
  1423. ;.nomorewalls:
  1424.  
  1425.  move.l #xzangs,a0
  1426.  move.l #ANGLEBRIGHTS,a1
  1427.  move.w #15,d7
  1428.  sub.l a2,a2
  1429.  sub.l a3,a3
  1430.  sub.l a4,a4
  1431.  sub.l a5,a5
  1432.  moveq #00,d0
  1433.  moveq #00,d1
  1434. averageangle:
  1435.  
  1436.  moveq #0,d4
  1437.  move.b 16(a1),d4
  1438.  cmp.b #$80,d4
  1439.  beq.s .nobright
  1440.  
  1441.  neg.w d4
  1442.  add.w #48,d4
  1443.  cmp.b d1,d4
  1444.  ble.s .nobrightest
  1445.  move.b d4,d1
  1446. .nobrightest:
  1447.  
  1448.  
  1449.  move.w (a0),d5
  1450.  move.w 2(a0),d6
  1451.  muls d4,d5
  1452.  muls d4,d6
  1453.  add.l d5,a2
  1454.  add.l d6,a3
  1455.  
  1456. .nobright:
  1457.  
  1458. BOTTYL:
  1459.  
  1460.  moveq #0,d4
  1461.  move.b (a1),d4
  1462.  cmp.b #$80,d4
  1463.  beq.s .nobright 
  1464.  neg.w d4
  1465.  add.w #48,d4
  1466.  cmp.b d0,d4
  1467.  blt.s .nobrightest
  1468.  move.b d4,d0
  1469. .nobrightest:
  1470.  
  1471.  move.w (a0),d5
  1472.  move.w 2(a0),d6
  1473.  muls d4,d5
  1474.  muls d4,d6
  1475.  add.l d5,a4
  1476.  add.l d6,a5
  1477.  
  1478. .nobright:
  1479.  addq #4,a0
  1480.  addq #1,a1
  1481.  
  1482.  dbra d7,averageangle
  1483.  
  1484.  move.l a2,d2
  1485.  move.l a3,d3
  1486.  move.l a4,d4
  1487.  move.l a5,d5
  1488.  
  1489.  add.l d2,d4
  1490.  add.l d3,d5    ; bright dir.
  1491.  
  1492.  bsr FINDROUGHANG
  1493.  
  1494. foundang:
  1495.  
  1496.  move.w #7,d2
  1497.  move.w d1,d3 
  1498.  cmp.w d0,d1
  1499.  beq.s INMIDDLE
  1500.  bgt.s .okpicked
  1501.  move.w d0,d3
  1502. .okpicked
  1503.  
  1504.  move.w d0,d2
  1505.  add.w d1,d2    ; total brightness
  1506.  
  1507.  muls #16,d1
  1508.  subq #1,d1
  1509.  divs d2,d1
  1510.  move.w d1,d2
  1511.  
  1512. INMIDDLE:
  1513.  ; d2=y distance from middle of brightest pt.
  1514.  ; d3=brightness
  1515.  neg.w d3
  1516.  add.w #48,d3
  1517.  
  1518.  move.l #willy,a0
  1519.  move.l #guff,a1
  1520.  add.l guffptr,a1
  1521. ; add.l #16*7,guffptr
  1522. ; cmp.l #16*7*15,guffptr
  1523. ; ble.s .noreguff
  1524. ; move.l #0,guffptr
  1525. ;.noreguff:
  1526.  
  1527.  muls #7*16,d2
  1528.  add.l d2,a1
  1529.  
  1530.  move.w p1_angpos,d0
  1531.  neg.w d0
  1532.  add.w #4096,d0
  1533.  and.w #8191,d0
  1534.  asr.w #8,d0
  1535.  asr.w #1,d0
  1536.  
  1537.  sub.b #3,d0
  1538.  add.b d4,d0
  1539.  and.w #15,d0
  1540.  move.w #6,d1
  1541. .across:
  1542.  move.w #6,d2
  1543.  move.w d0,d5
  1544. .down
  1545.  move.b (a1,d5),d4
  1546.  add.b d3,d4
  1547.  ext.w d4
  1548.  move.w d4,(a0)+
  1549.  addq #1,d5
  1550.  and.w #15,d5
  1551.  dbra d2,.down
  1552.  add.w #16,a1
  1553.  dbra d1,.across
  1554.  
  1555. ; jsr CALCBRIGHTRINGS
  1556.  
  1557. ; Need to scan around zone points putting in
  1558. ; brightnesses.
  1559.  
  1560.  
  1561. ; move.w PLR1_xoff,newx
  1562. ; move.w PLR1_zoff,newz
  1563. ; move.w thisxpos,oldx
  1564. ; move.w thiszpos,oldz
  1565. ; movem.l d0-d7/a0-a6,-(a7)
  1566. ; jsr HeadTowardsAng
  1567. ; movem.l (a7)+,d0-d7/a0-a6
  1568.  
  1569.  
  1570. ; move.w #0,d0
  1571. ; move.w AngRet,d0
  1572. ; move.w p1_angpos,d0
  1573. ; neg.w d0
  1574. ; add.w #4096,d0
  1575. ; and.w #8191,d0
  1576. ; asr.w #8,d0
  1577. ; asr.w #1,d0
  1578. ; sub.b #6,d0
  1579. ; and.b #15,d0
  1580. ; move.l #ANGLEBRIGHTS,a1
  1581. ; move.l #willy,a0
  1582. ; moveq #6,d1
  1583. ;.across:
  1584. ; moveq #0,d3
  1585. ; moveq #0,d4
  1586. ; move.b (a1,d0.w),d4
  1587. ; bge.s .okp1
  1588. ; moveq #0,d4
  1589. ;.okp1
  1590. ; move.b 16(a1,d0.w),d3
  1591. ; bge.s .okp2
  1592. ; moveq #0,d3
  1593. ;.okp2
  1594. ; sub.w d3,d4
  1595. ; swap d3
  1596. ; swap d4
  1597. ; divs.l #7,d4
  1598. ; moveq #6,d2
  1599. ; moveq #0,d5
  1600. ;.down:
  1601. ; swap d3
  1602. ; move.w d3,(a0,d5.w*2)
  1603. ; swap d3
  1604. ; addq #7,d5
  1605. ; add.l d4,d3
  1606. ; dbra d2,.down
  1607. ; addq #2,d0
  1608. ; and.w #15,d0
  1609. ; addq #2,a0
  1610. ; dbra d1,.across
  1611.  
  1612.  
  1613.  move.w BRIGHTTOADD,d0
  1614.  move.l #willy,a0
  1615.  move.l #willybright,a1
  1616.  move.w #48,d1
  1617. ADDITIN:
  1618.  
  1619.  move.w d0,d2
  1620.  add.w (a1)+,d2
  1621.  ble.s .nopos
  1622.  
  1623.  moveq #0,d2
  1624.  
  1625. .nopos:
  1626.  
  1627.  add.w d2,(a0)+
  1628.  
  1629.  dbra d1,ADDITIN
  1630.  
  1631.  
  1632.  
  1633.  tst.b FLIPIT
  1634.  beq.s LEFTTORIGHT
  1635.  
  1636.  move.l #Brights2,a0
  1637.  bra DONERIGHTTOLEFT
  1638.  
  1639. LEFTTORIGHT:
  1640.  
  1641.  move.l #Brights,a0
  1642. DONERIGHTTOLEFT:
  1643.  move.l #willy,a2
  1644.  move.l BASEPAL,a1
  1645.  move.b WHICHLIGHTPAL,d0
  1646.  asl.w #8,d0
  1647.  add.w d0,a1 
  1648.  move.l #PALS,a3
  1649.  move.w #28,d0
  1650. makepals:
  1651.  
  1652.  move.w (a0)+,d1
  1653.  move.w (a2,d1.w*2),d1
  1654.  bge.s .okpos
  1655.  moveq #0,d1
  1656. .okpos: 
  1657.  cmp.w #31,d1
  1658.  blt.s .okneg
  1659.  move.w #31,d1
  1660. .okneg:
  1661.  
  1662.  move.l (a1,d1.w*8),(a3)+
  1663.  move.b #0,-4(a3)
  1664.  move.l 4(a1,d1.w*8),(a3)+
  1665.  
  1666.  dbra d0,makepals
  1667.  
  1668.  movem.l (a7)+,d0-d7/a0-a6
  1669.  
  1670.  move.l #PALS,a4
  1671.  
  1672. drawlightlop
  1673.  swap d7
  1674.  move.l midobj(pc),a5
  1675.  lea (a5,d7.w*4),a5
  1676.  swap d7
  1677.  add.l a2,d7
  1678.  move.l WAD_PTR(PC),a0
  1679.  
  1680.  move.l toppt(pc),a6
  1681.  adda.w a1,a6
  1682.  addq #1,a1
  1683.  move.l (a5),d1
  1684.  beq .blankstrip
  1685.  
  1686.  add.l d1,a0
  1687.  
  1688.  move.l d5,d6
  1689.  move.l d5,d1
  1690.  move.w d4,-(a7)
  1691. .drawavertstrip
  1692.  move.b (a0,d1.w),d0
  1693.  beq.s .dontplotthisoneitsblack
  1694.  move.b (a4,d0.w),(a6)
  1695. .dontplotthisoneitsblack:
  1696.  adda.w #320,a6
  1697.  add.l d2,d6
  1698.  addx.w d2,d1
  1699.  dbra d4,.drawavertstrip
  1700.  move.w (a7)+,d4
  1701. .blankstrip:
  1702.  dbra d3,drawlightlop
  1703.  bra objbehind
  1704.  
  1705. *********************************************
  1706. FINDROUGHANG:
  1707.  neg.l d5
  1708.  moveq #0,d7
  1709.  tst.l d4
  1710.  bge.s .no8
  1711.  add.w #8,d7
  1712.  neg.l d4
  1713. .no8
  1714.  tst.l d5
  1715.  bge.s .no4
  1716.  neg.l d5
  1717.  add.w #4,d7
  1718. .no4
  1719.  cmp.l d5,d4
  1720.  bge.s .no2
  1721.  addq #2,d7
  1722.  exg d4,d5
  1723. .no2:
  1724.  asr.l #1,d4
  1725.  cmp.l d5,d4
  1726.  bge.s .no1
  1727.  addq #1,d7
  1728. .no1
  1729.  
  1730.  move.w maptoang(pc,d7.w*2),d4    ; retun angle
  1731.  rts
  1732.  
  1733. maptoang:
  1734.  dc.w 3,2,0,1,4,5,7,6
  1735.  dc.w 12,13,15,14,11,10,8,9
  1736.  
  1737. guffptr: dc.l 0
  1738.  
  1739. *********************************************
  1740. CALCBRIGHTRINGS:
  1741.  move.l #ANGLEBRIGHTS,a2
  1742.  move.l #$80808080,(a2)
  1743.  move.l #$80808080,4(a2)
  1744.  move.l #$80808080,8(a2)
  1745.  move.l #$80808080,12(a2)
  1746.  move.l #$80808080,16(a2)
  1747.  move.l #$80808080,20(a2)
  1748.  move.l #$80808080,24(a2)
  1749.  move.l #$80808080,28(a2)
  1750.  
  1751.  move.l #$80808080,32(a2)
  1752.  move.l #$80808080,36(a2)
  1753.  move.l #$80808080,40(a2)
  1754.  move.l #$80808080,44(a2)
  1755.  move.l #$80808080,48(a2)
  1756.  move.l #$80808080,52(a2)
  1757.  move.l #$80808080,56(a2)
  1758.  move.l #$80808080,60(a2)
  1759.  
  1760.  move.w currzone(pc),d0
  1761.  bsr CALCBRIGHTSINZONE
  1762.  
  1763.  move.l #ANGLEBRIGHTS+32,a2
  1764.  
  1765. ; Now do the brightnesses of surrounding
  1766. ; zones:
  1767.  
  1768.  move.l FloorLines,a1
  1769.  move.w currzone,d0
  1770.  move.l ZoneAdds,a4
  1771.  move.l (a4,d0.w*4),a4
  1772.  add.l LEVELDATA,a4
  1773.  move.l a4,a5
  1774.  
  1775.  adda.w ToExitList(a4),a5
  1776.  
  1777. .doallwalls
  1778.  move.w (a5)+,d0
  1779.  blt .nomorewalls
  1780.  
  1781.  asl.w #4,d0
  1782.  lea (a1,d0.w),a3
  1783.  
  1784.  move.w 8(a3),d0
  1785.  blt.s .solidwall ; a wall not an exit.
  1786.  
  1787.  movem.l a1/a4/a5,-(a7) 
  1788.  bsr CALCBRIGHTSINZONE
  1789.  movem.l (a7)+,a1/a4/a5
  1790.  bra .doallwalls
  1791.  
  1792. .solidwall:
  1793.  move.w 4(a3),d1
  1794.  move.w 6(a3),d2
  1795.  
  1796.  move.w oldx,newx
  1797.  move.w oldz,newz
  1798.  sub.w d2,newx
  1799.  add.w d1,newz
  1800.  
  1801.  movem.l d0-d7/a0-a6,-(a7)
  1802.  jsr HeadTowardsAng
  1803.  movem.l (a7)+,d0-d7/a0-a6
  1804.  move.w AngRet,d1
  1805.  neg.w d1
  1806.  and.w #8191,d1
  1807.  asr.w #8,d1
  1808.  asr.w #1,d1
  1809.  
  1810.  move.b #48,(a2,d1.w)
  1811.  move.b #48,16(a2,d1.w)
  1812.  bra .doallwalls 
  1813.  
  1814. .nomorewalls:
  1815.  
  1816.  
  1817. ; move.b #0,(a2)
  1818. ; move.b #20,8(a2)
  1819. ; move.b #0,16(a2)
  1820. ; move.b #20,24(a2)
  1821.  
  1822.  move.l #ANGLEBRIGHTS,a0
  1823.  bsr TWEENBRIGHTS
  1824.  move.l #ANGLEBRIGHTS+16,a0
  1825.  bsr TWEENBRIGHTS
  1826.  move.l #ANGLEBRIGHTS+32,a0
  1827.  bsr TWEENBRIGHTS
  1828.  move.l #ANGLEBRIGHTS+48,a0
  1829.  bsr TWEENBRIGHTS
  1830.  
  1831.  move.l #ANGLEBRIGHTS,a0
  1832.  move.b #15,d0
  1833. ADDBRIGHTS
  1834.  
  1835.  moveq #0,d3
  1836.  moveq #0,d4
  1837.  move.b 32(a0),d3
  1838.  move.b 48(a0),d4
  1839.  neg.w d3
  1840.  add.w #48,d3
  1841.  neg.w d4
  1842.  add.w #48,d4
  1843.  asr.w #1,d4
  1844.  asr.w #1,d3
  1845.  
  1846.  move.b 16(a0),d5
  1847.  sub.b d5,d4
  1848.  ble.s .ok2
  1849.  moveq #0,d4
  1850. .ok2:
  1851.  move.b (a0),d5
  1852.  sub.b d5,d3
  1853.  ble.s .ok1
  1854.  moveq #0,d3
  1855. .ok1:
  1856.  neg.b d3
  1857.  neg.b d4
  1858.  
  1859.  move.b d4,16(a0)
  1860.  move.b d3,(a0)+ 
  1861.  
  1862.  dbra d0,ADDBRIGHTS
  1863.  
  1864.  rts
  1865.  
  1866. **********************************************
  1867.  
  1868. TWEENBRIGHTS:
  1869.  
  1870.  moveq #0,d0
  1871. .backinto:
  1872.  cmp.b #-128,(a0,d0.w)
  1873.  bne.s .okbr
  1874.  addq #1,d0
  1875.  bra.s .backinto
  1876.  
  1877. .okbr:
  1878.  
  1879.  move.b d0,d7 ;starting pos
  1880.  move.b d0,d1 ;previous pos
  1881.  
  1882. ; tween to next value
  1883. .findnext
  1884.  addq #1,d0
  1885.  and.w #15,d0
  1886.  cmp.b #-128,(a0,d0.w)
  1887.  beq.s .findnext
  1888.  
  1889.  moveq #0,d2
  1890.  moveq #0,d3
  1891.  move.b (a0,d1.w),d2
  1892.  move.b (a0,d0.w),d3
  1893.  sub.w d2,d3
  1894.  
  1895.  move.w d0,d4
  1896.  sub.w d1,d4
  1897.  bgt.s .okpos
  1898.  add.w #16,d4
  1899. .okpos:
  1900.  
  1901.  swap d2
  1902.  swap d3
  1903.  ext.l d4
  1904.  divs.l d4,d3
  1905.  
  1906.  subq #1,d4 ; number of tweens
  1907.  
  1908. .putintween
  1909.  swap d2
  1910.  move.b d2,(a0,d1.w)
  1911.  swap d2
  1912.  add.l d3,d2
  1913.  addq #1,d1
  1914.  and.w #15,d1
  1915.  dbra d4,.putintween
  1916.  
  1917.  cmp.b d0,d7
  1918.  beq.s .doneall
  1919.  
  1920.  move.w d0,d1
  1921.  bra .findnext
  1922.  
  1923. .doneall
  1924.  
  1925.  rts
  1926.  
  1927. IMINTHETOPDAD: dc.w 0
  1928.  
  1929. *************************************
  1930. CALCBRIGHTSINZONE:
  1931.  move.w d0,d1
  1932.  muls #20,d1
  1933.  move.l ZoneBorderPts,a1
  1934.  add.l d1,a1
  1935.  move.l #CurrentPointBrights,a0
  1936.  lea (a0,d1.l*4),a0
  1937.  
  1938.  tst.b IMINTHETOPDAD
  1939.  beq.s .notintopdad
  1940.  adda.w #4,a0
  1941. .notintopdad
  1942.  
  1943. ; A0 points at the brightnesses of the zone points.
  1944. ; a1 points at the border points of the zone.
  1945. ; list is terminated with -1.
  1946.  
  1947.  move.l Points,a3
  1948.  
  1949.  move.w thisxpos,oldx
  1950.  move.w thiszpos,oldz
  1951.  move.w #10,speed
  1952.  move.w #0,Range
  1953.  
  1954. DOPTBR
  1955.  move.w (a1)+,d0    ;pt number
  1956.  blt DONEPTBR
  1957.  
  1958.  move.w (a3,d0.w*4),newx
  1959.  move.w 2(a3,d0.w*4),newz
  1960.  
  1961.  movem.l d0-d7/a0-a6,-(a7)
  1962.  jsr HeadTowardsAng
  1963.  movem.l (a7)+,d0-d7/a0-a6
  1964.  
  1965.  move.w AngRet,d1
  1966.  neg.w d1
  1967.  and.w #8191,d1
  1968.  asr.w #8,d1
  1969.  asr.w #1,d1
  1970.  
  1971.  move.w (a0),d0
  1972.  bge.s .okpos
  1973.  add.w #332,d0
  1974.  asr.w #2,d0
  1975.  neg.w d0
  1976.  add.w #332,d0
  1977.  
  1978. .okpos
  1979.  sub.w #300,d0
  1980.  bge.s .okpos3
  1981.  move.w #0,d0
  1982. .okpos3:
  1983.  move.b d0,d2
  1984.  asr.b #1,d2
  1985.  add.b d2,d0
  1986.  move.b d0,(a2,d1.w)
  1987.  move.w 2(a0),d0
  1988.  bge.s .okpos2
  1989.  add.w #332,d0
  1990.  asr.w #2,d0
  1991.  neg.w d0
  1992.  add.w #332,d0
  1993. .okpos2
  1994.  sub.w #300,d0
  1995.  bge.s .okpos4
  1996.  move.w #0,d0
  1997. .okpos4:
  1998.  
  1999.  move.b d0,d2
  2000.  asr.b #1,d2
  2001.  add.b d2,d0
  2002.  move.b d0,16(a2,d1.w)
  2003.  adda.w #8,a0
  2004.  
  2005.  bra DOPTBR
  2006. DONEPTBR
  2007.  rts
  2008.  
  2009. thisxpos: dc.w 0
  2010. thiszpos: dc.w 0
  2011. FACINGANG: dc.w 0
  2012.  
  2013. ANGLEBRIGHTS: ds.l 8*2
  2014.  
  2015. Brights:
  2016.  dc.w 3
  2017.  dc.w 8,9,10,11,12
  2018.  dc.w 15,16,17,18,19
  2019.  dc.w 21,22,23,24,25,26,27
  2020.  dc.w 29,30,31,32,33
  2021.  dc.w 36,37,38,39,40
  2022.  dc.w 45
  2023.  
  2024. Brights2:
  2025.  dc.w 3
  2026.  dc.w 12,11,10,9,8
  2027.  dc.w 19,18,17,16,15
  2028.  dc.w 27,26,25,24,23,22,21
  2029.  dc.w 33,32,31,30,29
  2030.  dc.w 40,39,38,37,36
  2031.  dc.w 45
  2032.  
  2033.  
  2034. PALS:
  2035.  ds.l 2*49
  2036.  
  2037. willy:
  2038.  dc.w 0,0,0,0,0,0,0
  2039.  dc.w 5,5,5,5,5,5,5
  2040.  dc.w 10,10,10,10,10,10,10
  2041.  dc.w 15,15,15,15,15,15,15
  2042.  dc.w 20,20,20,20,20,20,20
  2043.  dc.w 25,25,25,25,25,25,25
  2044.  dc.w 30,30,30,30,30,30,30
  2045.  
  2046. willybright:
  2047.  dc.w 30,30,30,30,30,30,30
  2048.  dc.w 30,20,20,20,20,20,30
  2049.  dc.w 30,20,6,3,6,20,30
  2050.  dc.w 30,20,6,0,6,20,30
  2051.  dc.w 30,20,6,6,6,20,30
  2052.  dc.w 30,20,20,20,20,20,30
  2053.  dc.w 30,30,30,30,30,30,30
  2054.  
  2055. xzangs:
  2056.  dc.w 0,23,10,20,16,16,20,10
  2057.  dc.w 23,0,20,-10,16,-16,10,-20
  2058.  dc.w 0,-23,-10,-20,-16,-16,-20,-10
  2059.  dc.w -23,0,-20,10,-16,16,-10,20
  2060.  
  2061. guff:
  2062.  incbin "ab3:includes/guff"
  2063.  
  2064. midx: dc.w 0
  2065. objpixwidth: dc.w 0
  2066. tmptst: dc.l 0
  2067. toppt: dc.l 0
  2068. doneit: dc.w 0
  2069. replaceend: dc.w 0
  2070. saveend: dc.w 0
  2071. midobj: dc.l 0
  2072. obadd: dc.l 0 
  2073. DOWN_STRIP: dc.w 0
  2074. WAD_PTR: dc.l 0
  2075. PTR_PTR: dc.l 0
  2076.  
  2077. PolyAngPtr: dc.l 0
  2078. PointAngPtr: dc.l 0
  2079.  
  2080.  ds.w 100
  2081. objintocop:
  2082.  incbin "ab3:includes/XTOCOPX"
  2083.  ds.w 100
  2084.  
  2085.    *********************************
  2086. ***************************************
  2087.    ********************************* 
  2088. tstddd: dc.l 0 
  2089.  
  2090. polybehind:
  2091.  rts
  2092.  
  2093. SORTIT: dc.w 0
  2094.  
  2095. objbright:
  2096.  dc.w 0
  2097. ObjAng: dc.w 0
  2098.  
  2099. POLYMIDDLEY: dc.w 0
  2100. OBJONOFF: dc.l 0
  2101.  
  2102. PolygonObj:
  2103.  
  2104. ************************
  2105.  
  2106. ; move.w 4(a0),d0    ; ypos
  2107. ; move.w 2(a0),d1
  2108. ; add.w #2,d1
  2109. ; add.w d1,d0
  2110. ; cmp.w #-48,d0
  2111. ; blt nobounce
  2112. ; neg.w d1
  2113. ; add.w d1,d0
  2114. ;nobounce:
  2115. ; move.w d1,2(a0)
  2116. ; move.w d0,4(a0)
  2117.  
  2118. ; add.w #80*2,boxang
  2119. ; and.w #8191,boxang
  2120.  
  2121. ************************
  2122.  
  2123.  move.w Facing(a0),ObjAng
  2124.  
  2125.  move.w MIDDLEY,POLYMIDDLEY
  2126.  
  2127.  move.w (a0)+,d0
  2128.  move.l ObjectPoints,a4
  2129.  
  2130.  move.w (a4,d0.w*8),thisxpos
  2131.  move.w 4(a4,d0.w*8),thiszpos
  2132.  
  2133.  move.w 2(a1,d0.w*8),d1    ; zpos of mid
  2134.  blt polybehind
  2135.  bgt.s .okinfront
  2136.  
  2137.  move.l a0,a3
  2138.  sub.l PLR1_Obj,a3
  2139.  cmp.l #130,a3
  2140.  bne polybehind
  2141.  
  2142.  tst.b whichdoing
  2143.  bne polybehind
  2144.  
  2145.  move.w #1,d1
  2146.  move.w #80,POLYMIDDLEY
  2147.  tst.b FULLSCR
  2148.  beq.s .okinfront
  2149.  move.w #120,POLYMIDDLEY
  2150. .okinfront:
  2151.  
  2152.  movem.l d0-d7/a0-a6,-(a7)
  2153.  
  2154.  jsr CALCBRIGHTRINGS
  2155.  
  2156.  move.l #ANGLEBRIGHTS,a0
  2157.  move.l #PointAndPolyBrights,a1
  2158.  move.w #15,d7
  2159.  move.w #8,d6
  2160. MYacross:
  2161.  moveq #0,d3
  2162.  moveq #0,d4
  2163.  
  2164.  move.b 16(a0,d6.w),d4
  2165.  bge.s .okp2
  2166.  moveq #0,d4
  2167. .okp2
  2168.  
  2169.  move.b (a0,d6.w),d3
  2170.  bge.s .okp1
  2171.  moveq #0,d3
  2172. .okp1
  2173.  
  2174.  sub.w d3,d4
  2175.  swap d3
  2176.  swap d4
  2177.  divs.l #8,d4
  2178.  moveq #7,d2
  2179.  moveq #3*16,d5
  2180. .down:
  2181.  swap d3
  2182.  move.b d3,(a1,d5.w)
  2183.  swap d3
  2184.  add.w #16,d5
  2185.  add.l d4,d3
  2186.  dbra d2,.down
  2187.  
  2188. TOPPART:
  2189.  
  2190.  moveq #0,d3
  2191.  moveq #0,d4
  2192.  
  2193.  bchg #3,d6
  2194.  
  2195.  move.b (a0,d6.w),d4
  2196.  bge.s .okp2
  2197.  moveq #0,d4
  2198. .okp2
  2199.  
  2200.  bchg #3,d6
  2201.  
  2202.  move.b (a0,d6.w),d3
  2203.  bge.s .okp1
  2204.  moveq #0,d3
  2205. .okp1
  2206.  
  2207.  sub.w d3,d4
  2208.  swap d3
  2209.  swap d4
  2210.  divs.l #8,d4
  2211.  asr.l #1,d4    ; halfway
  2212.  moveq #3,d2
  2213.  moveq #3*16,d5
  2214. .down:
  2215.  swap d3
  2216.  move.b d3,(a1,d5.w)
  2217.  swap d3
  2218.  sub.w #16,d5
  2219.  add.l d4,d3
  2220.  dbra d2,.down
  2221.  
  2222. BOTPART:
  2223.  
  2224.  moveq #0,d3
  2225.  moveq #0,d4
  2226.  
  2227.  bchg #3,d6
  2228.  
  2229.  move.b 16(a0,d6.w),d4
  2230.  bge.s .okp2
  2231.  moveq #0,d4
  2232. .okp2
  2233.  
  2234.  bchg #3,d6
  2235.  
  2236.  move.b 16(a0,d6.w),d3
  2237.  bge.s .okp1
  2238.  moveq #0,d3
  2239. .okp1
  2240.  
  2241.  sub.w d3,d4
  2242.  swap d3
  2243.  swap d4
  2244.  divs.l #8,d4
  2245.  asr.l #1,d4    ; halfway
  2246.  moveq #3,d2
  2247.  move.w #11*16,d5
  2248. .down:
  2249.  swap d3
  2250.  move.b d3,(a1,d5.w)
  2251.  swap d3
  2252.  add.w #16,d5
  2253.  add.l d4,d3
  2254.  dbra d2,.down
  2255.  
  2256.  
  2257.  subq #1,d6
  2258.  and.w #$f,d6
  2259.  addq #1,a1
  2260.  dbra d7,MYacross
  2261.  
  2262.  movem.l (a7)+,d0-d7/a0-a6
  2263.  
  2264.  
  2265.  move.w (a0),d2
  2266.  move.w d1,d3
  2267.  asr.w #7,d3
  2268.  add.w d3,d2
  2269.  move.w d2,objbright
  2270.  
  2271.  move.w topclip,d2
  2272.  move.w botclip,d3
  2273.  
  2274.  move.w d2,objclipt
  2275.  move.w d3,objclipb
  2276.  
  2277. ; dont use d1 here.
  2278.  
  2279.  move.w 6(a0),d5
  2280.  move.l #POLYOBJECTS,a3
  2281.  move.l (a3,d5.w*4),a3
  2282.  
  2283.  move.w (a3)+,SORTIT
  2284.  
  2285.  move.l a3,START_OF_OBJ
  2286.  
  2287. *******************************************************************
  2288. ***************************************************************
  2289. *****************************************************************
  2290.  
  2291.  move.w (a3)+,num_points
  2292.  move.w (a3)+,d6    ; num_frames
  2293.  
  2294.  
  2295.  move.l a3,POINTER_TO_POINTERS
  2296.  lea (a3,d6.w*4),a3
  2297.  
  2298.  move.l a3,LinesPtr
  2299.  
  2300.  moveq #0,d5
  2301.  move.w 8(a0),d5
  2302.  
  2303. ************************************************
  2304. * Just for charles (animate automatically)
  2305. ; add.w #1,d5
  2306. ; cmp.w d6,d5
  2307. ; blt.s okless
  2308. ; moveq #0,d5
  2309. ;okless:
  2310. ; move.w d5,8(a0)
  2311. ************************************************ 
  2312.  
  2313.  moveq #0,d2
  2314.  move.l POINTER_TO_POINTERS,a4
  2315.  move.w (a4,d5.w*4),d2
  2316.  add.l START_OF_OBJ,d2
  2317.  move.l d2,PtsPtr
  2318.  move.w 2(a4,d5.w*4),d5
  2319.  add.l START_OF_OBJ,d5
  2320.  move.l d5,PolyAngPtr
  2321.  move.l d2,a3
  2322.  move.w num_points,d5
  2323.  
  2324.  move.l (a3)+,OBJONOFF
  2325.  
  2326.  move.l a3,PointAngPtr
  2327.  move.w d5,d2
  2328.  moveq #0,d3
  2329.  lsr.w #1,d2
  2330.  addx.w d3,d2
  2331.  add.w d2,d2
  2332.  add.w d2,a3
  2333.  subq #1,d5
  2334.  
  2335.  move.l #boxrot,a4
  2336.  
  2337.  move.w ObjAng,d2
  2338.  sub.w #2048,d2
  2339.  sub.w angpos,d2
  2340.  and.w #8191,d2
  2341.  move.l #SineTable,a2
  2342.  lea (a2,d2.w),a5
  2343.  move.l #boxbrights,a6
  2344.      
  2345.  move.w (a5),d6
  2346.  move.w 2048(a5),d7
  2347.          
  2348. rotobj:
  2349.  move.w (a3),d2    ; xpt
  2350.  move.w 2(a3),d3    ; ypt
  2351.  move.w 4(a3),d4    ; zpt
  2352.  
  2353. ; add.w d2,d2
  2354. ; add.w d3,d3
  2355. ; add.w d4,d4
  2356.  
  2357. ; first rotate around z axis.
  2358.  
  2359. ; move.w d2,d6
  2360. ; move.w d3,d7
  2361. ; muls 2048(a2),d3
  2362. ; muls (a2),d2
  2363. ; sub.l d3,d2    ; newx
  2364. ; muls (a2),d7
  2365. ; muls 2048(a2),d6
  2366. ; add.l d7,d6    ; newy
  2367. ; add.l d6,d6
  2368. ; swap d6
  2369. ; add.l d2,d2
  2370. ; swap d2
  2371. ; move.w d6,d3    ; newy
  2372.  
  2373.  muls d7,d4
  2374.  muls d6,d2
  2375.  sub.l d4,d2
  2376.  asr.l #8,d2
  2377.  asr.l #1,d2
  2378.  move.l d2,(a4)+
  2379.  ext.l d3
  2380.  asl.l #6,d3
  2381.  move.l d3,(a4)+
  2382.  move.w (a3),d2
  2383.  move.w 4(a3),d4
  2384.  muls d6,d4
  2385.  muls d7,d2
  2386.  add.l d2,d4
  2387. ; add.l d4,d4
  2388.  swap d4
  2389.  move.w d4,(a4)+
  2390.  
  2391.  addq #6,a3
  2392.  dbra d5,rotobj
  2393.  
  2394.  
  2395.  
  2396.  move.l 4(a1,d0.w*8),d0    ; xpos of mid
  2397.  
  2398.  move.w num_points,d7
  2399.  move.l #boxrot,a2
  2400.  move.l #boxonscr,a3
  2401.  move.l #boxbrights,a6
  2402.  move.w 2(a0),d2
  2403.  subq #1,d7
  2404.  
  2405.  asl.l #1,d0
  2406.  
  2407.  tst.b FULLSCR
  2408.  beq.s smallconv
  2409.  
  2410.  move.w d1,d3
  2411.  asl.w #1,d1
  2412.  add.w d3,d1
  2413.  
  2414.  ext.l d2
  2415.  asl.l #7,d2
  2416.  sub.l yoff,d2
  2417.  asl.l #1,d2
  2418. .convtoscr
  2419.  move.l (a2),d3
  2420.  add.l d0,d3
  2421.  move.l d3,(a2)+
  2422.  move.l (a2),d4
  2423.  add.l d2,d4
  2424.  move.l d4,(a2)+
  2425.  move.w (a2),d5
  2426.  add.w d1,d5
  2427.  ble .ptbehind
  2428.  move.w d5,(a2)+
  2429.  add.w d5,d5
  2430.  
  2431.  move.l d3,d6
  2432.  add.l d6,d6
  2433.  add.l d6,d3
  2434.  move.l d4,d6
  2435.  add.l d6,d6
  2436.  add.l d6,d4
  2437.  
  2438.  divs d5,d3
  2439.  divs d5,d4
  2440.  add.w MIDDLEX,d3
  2441.  add.w POLYMIDDLEY,d4
  2442.  move.w d3,(a3)+
  2443.  move.w d4,(a3)+
  2444.  
  2445.  dbra d7,.convtoscr
  2446.  bra DONECONV
  2447.  
  2448. .ptbehind:
  2449.  move.w d5,(a2)+
  2450.  move.w #32767,(a3)+
  2451.  move.w #32767,(a3)+
  2452.  dbra d7,.convtoscr
  2453.  bra DONECONV
  2454.  
  2455. smallconv
  2456.  
  2457.  asl.w #1,d1
  2458.  ext.l d2
  2459.  asl.l #7,d2
  2460.  sub.l yoff,d2
  2461.  asl.l #1,d2 
  2462. .convtoscr
  2463.  move.l (a2),d3
  2464.  add.l d0,d3
  2465.  move.l d3,(a2)+
  2466.  move.l (a2),d4
  2467.  add.l d2,d4
  2468.  move.l d4,(a2)+
  2469.  move.w (a2),d5
  2470.  add.w d1,d5
  2471.  ble .ptbehind2
  2472.  move.w d5,(a2)+
  2473.  divs d5,d3
  2474.  divs d5,d4
  2475.  add.w MIDDLEX,d3
  2476.  add.w POLYMIDDLEY,d4
  2477.  move.w d3,(a3)+
  2478.  move.w d4,(a3)+
  2479.  
  2480.  dbra d7,.convtoscr
  2481.  
  2482.  bra DONECONV
  2483.  
  2484. .ptbehind2:
  2485.  move.w d5,(a2)+
  2486.  move.w #32767,(a3)+
  2487.  move.w #32767,(a3)+
  2488.  dbra d7,.convtoscr
  2489.  
  2490. DONECONV
  2491.  
  2492. **************************
  2493.  move.w num_points,d7
  2494.  
  2495.  move.l #boxbrights,a6
  2496.  subq #1,d7
  2497.  move.l PointAngPtr,a0
  2498.  move.l #PointAndPolyBrights,a2
  2499.  move.w ObjAng,d2
  2500.  asr.w #8,d2
  2501.  asr.w #1,d2
  2502.  st d5
  2503.  
  2504. calcpointangbrights:
  2505.  
  2506.  moveq #0,d0
  2507.  move.b (a0)+,d0
  2508.  move.b d0,d3
  2509.  add.w d2,d3
  2510.  and.w #$f,d3
  2511.  and.w #$f0,d0
  2512.  add.w d3,d0
  2513.  
  2514.  moveq #0,d1
  2515.  move.b (a2,d0.w),d1
  2516.  bge.s .okpos
  2517.  moveq #0,d1
  2518. .okpos:
  2519.  
  2520.  cmp.w #31,d1
  2521.  ble.s .oksmall
  2522.  move.w #31,d1
  2523. .oksmall:
  2524.  
  2525.  move.w d1,(a6)+
  2526.  
  2527.  dbra d7,calcpointangbrights
  2528.  
  2529. *************************
  2530.  
  2531.  
  2532.  
  2533.  move.l LinesPtr,a1
  2534.  
  2535. ; Now need to sort parts of object
  2536. ; into order.
  2537.  
  2538.  move.l #PartBuffer,a0
  2539.  move.l a0,a2
  2540.  move.w #63,d0
  2541. clrpartbuff:
  2542.  
  2543.  move.l #$80000001,(a2)
  2544.  addq #4,a2
  2545.  
  2546.  dbra d0,clrpartbuff
  2547.  
  2548.  move.l #boxrot,a2
  2549.  
  2550.  move.l OBJONOFF,d5
  2551.  
  2552.  tst.w SORTIT
  2553.  bne.s PutinParts
  2554.  
  2555.  
  2556. putinunsorted:
  2557.  
  2558.  move.w (a1)+,d7
  2559.  
  2560.  
  2561.  blt doneallparts
  2562.  
  2563.  lsr.l #1,d5
  2564.  bcs.s .yeson
  2565.  addq #2,a1
  2566.  bra putinunsorted 
  2567. .yeson:
  2568.  
  2569.  
  2570.  move.w (a1)+,d6
  2571.  move.l #0,(a0)+
  2572.  move.w d7,(a0)
  2573.  addq #4,a0
  2574.  
  2575.  bra putinunsorted
  2576.  
  2577.  
  2578. PutinParts
  2579.  move.w (a1)+,d7
  2580.  blt doneallparts
  2581.  
  2582.  lsr.l #1,d5
  2583.  bcs.s .yeson
  2584.  addq #2,a1
  2585.  bra PutinParts
  2586. .yeson:
  2587.  
  2588.  move.w (a1)+,d6
  2589.  move.l (a2,d6.w),d0
  2590.  asr.l #7,d0
  2591.  muls d0,d0
  2592.  move.l 4(a2,d6.w),d2
  2593.  asr.l #7,d2
  2594.  muls d2,d2
  2595.  add.l d2,d0 
  2596.  move.w 8(a2,d6.w),d2
  2597.  muls d2,d2
  2598.  add.l d2,d0
  2599.  move.l #PartBuffer-8,a0
  2600.  
  2601. stillfront
  2602.  addq #8,a0
  2603.  cmp.l (a0),d0
  2604.  blt stillfront
  2605.  move.l #endparttab-8,a5
  2606. domoreshift:
  2607.  move.l -8(a5),(a5)
  2608.  move.l -4(a5),4(a5)
  2609.  subq #8,a5
  2610.  cmp.l a0,a5
  2611.  bgt.s domoreshift
  2612.  
  2613.  move.l d0,(a0)
  2614.  move.w d7,4(a0)
  2615.  
  2616.  bra PutinParts
  2617.  
  2618. doneallparts:
  2619.  
  2620.  move.l #PartBuffer,a0
  2621.  
  2622. Partloop:
  2623.  move.l (a0)+,d7
  2624.  blt nomoreparts
  2625.  
  2626.  moveq #0,d0
  2627.  move.w (a0),d0
  2628.  addq #4,a0
  2629.  add.l START_OF_OBJ,d0
  2630.  move.l d0,a1
  2631.  move.w #0,firstpt
  2632.  
  2633. polyloo:
  2634.  
  2635.  tst.w (a1)
  2636.  blt.s nomorepolys
  2637.  movem.l a0/a1/d7,-(a7)
  2638.  bsr doapoly
  2639.  movem.l (a7)+,a0/a1/d7
  2640.  
  2641.  move.w (a1),d0
  2642.  lea 18(a1,d0.w*4),a1
  2643.  
  2644.  bra.s polyloo
  2645. nomorepolys
  2646.  
  2647.  bra Partloop
  2648.  
  2649. nomoreparts:
  2650.  rts
  2651.  
  2652. firstpt: dc.w 0
  2653.  
  2654. PartBuffer:
  2655.  ds.w 4*32
  2656. endparttab:
  2657.  
  2658. polybright: dc.l 0
  2659. PolyAng: dc.w 0
  2660.  
  2661. doapoly:
  2662.  
  2663.  move.w #960,Left
  2664.  move.w #-10,Right
  2665.  
  2666.  move.w (a1)+,d7    ; lines to draw 
  2667.  move.w (a1)+,preholes
  2668.  move.w 12(a1,d7.w*4),pregour
  2669.  move.l #boxonscr,a3
  2670.  
  2671.  movem.l d0-d7/a0-a6,-(a7)
  2672. * Check for any of these points behind...
  2673.  
  2674. checkbeh:
  2675.  move.w (a1),d0
  2676.  
  2677.  cmp.w #32767,(a3,d0.w*4)
  2678.  bne.s .notbeh
  2679.  cmp.w #32767,2(a3,d0.w*4)
  2680.  bne.s .notbeh
  2681.  
  2682.  movem.l (a7)+,d0-d7/a0-a6
  2683.  bra polybehind
  2684.  
  2685. .notbeh:
  2686.  
  2687.  addq #4,a1
  2688.  dbra d7,checkbeh
  2689.  
  2690.  
  2691.  movem.l (a7)+,d0-d7/a0-a6
  2692.  
  2693.  
  2694.  move.w (a1),d0
  2695.  move.w 4(a1),d1
  2696.  move.w 8(a1),d2
  2697.  move.w 2(a3,d0.w*4),d3
  2698.  move.w 2(a3,d1.w*4),d4
  2699.  move.w 2(a3,d2.w*4),d5
  2700.  move.w (a3,d0.w*4),d0
  2701.  move.w (a3,d1.w*4),d1
  2702.  move.w (a3,d2.w*4),d2
  2703.  
  2704.  sub.w d1,d0    ;x1
  2705.  sub.w d1,d2    ;x2
  2706.  sub.w d4,d3    ;y1
  2707.  sub.w d4,d5    ;y2
  2708.  
  2709.  muls d3,d2
  2710.  muls d5,d0
  2711.  sub.l d0,d2
  2712.  ble polybehind
  2713.  
  2714.  move.l #boxrot,a3
  2715.  move.w (a1),d0
  2716.  move.w d0,d1
  2717.  asl.w #2,d0
  2718.  add.w d1,d0
  2719.  move.w 4(a1),d1
  2720.  move.l d1,d2
  2721.  asl.w #2,d1
  2722.  add.w d2,d1
  2723.  move.w 8(a1),d2
  2724.  move.w d2,d3
  2725.  asl.w #2,d2
  2726.  add.w d3,d2
  2727.  move.l 4(a3,d0.w*2),d3
  2728.  move.l 4(a3,d1.w*2),d4
  2729.  move.l 4(a3,d2.w*2),d5
  2730.  move.l (a3,d0.w*2),d0
  2731.  move.l (a3,d1.w*2),d1
  2732.  move.l (a3,d2.w*2),d2
  2733.  
  2734.  sub.l d1,d0    ;x1
  2735.  sub.l d1,d2    ;x2
  2736.  sub.l d4,d3    ;y1
  2737.  sub.l d4,d5    ;y2
  2738.  
  2739.  asr.l #7,d0
  2740.  asr.l #7,d2
  2741.  asr.l #7,d3
  2742.  asr.l #7,d5
  2743.  
  2744.  muls d3,d2
  2745.  muls d5,d0
  2746.  sub.l d0,d2
  2747.  
  2748.  move.l d2,polybright
  2749.  move.l #boxonscr,a3
  2750.  
  2751.  clr.b drawit
  2752.  
  2753.  tst.b Gouraud(pc)
  2754.  bne.s usegour
  2755.  bsr putinlines
  2756.  bra.s dontusegour
  2757. usegour:
  2758.  bsr putingourlines
  2759. dontusegour:
  2760.  
  2761.  move.w #320,linedir
  2762.  move.l FASTBUFFER,a6
  2763.  
  2764.  tst.b drawit(pc)
  2765.  beq polybehind
  2766.  
  2767.  move.l #PolyTopTab,a4
  2768.  move.w Left(pc),d1
  2769.  move.w Right(pc),d7
  2770.  
  2771.  move.w leftclipb,d3
  2772.  move.w rightclipb,d4
  2773.  cmp.w d3,d7
  2774.  ble polybehind
  2775.  cmp.w d4,d1
  2776.  bge polybehind
  2777.  cmp.w d3,d1
  2778.  bge .notop
  2779.  move.w d3,d1
  2780. .notop
  2781.  cmp.w d4,d7
  2782.  ble .nobot
  2783.  move.w d4,d7
  2784. .nobot
  2785.  
  2786.  add.w d1,d1 
  2787.  lea (a4,d1.w*8),a4
  2788.  asr.w #1,d1
  2789.  sub.w d1,d7
  2790.  ble polybehind
  2791.  move.w d1,a2
  2792. ; move.l #objintocop,a2
  2793. ; lea (a2,d1.w*2),a2
  2794.  moveq #0,d0
  2795.  
  2796.  move.l TextureMaps,a0
  2797.  move.w (a1)+,d0
  2798.  ifeq CHEESEY
  2799.  bge.s .notsec
  2800.  and.w #$7fff,d0
  2801.  add.l #65536,a0
  2802. .notsec
  2803.  endc
  2804.  
  2805.  ifne CHEESEY
  2806.  
  2807.  bge.s .notsec
  2808.  and.w #$7fff,d0
  2809.  add.w #%0000010000000000,d0
  2810.  
  2811. .notsec:
  2812.  
  2813.  moveq #0,d1
  2814.  move.w d0,d1   ; 00000XXX 000000YY
  2815.  lsr.w #6,d0
  2816.  add.w d0,d1    ; 00000XXX 000XXXYY
  2817.  and.b #%111,d1 ; 00000XXX 00000XYY
  2818.  add.b d1,d1    ; 00000XXX 0000XYY0
  2819.  lsl.w #4,d1    ; 0XXX0000 XYY00000
  2820.  and.w #%0110000011100000,d1
  2821.  move.w d1,d0
  2822.  
  2823.  endc
  2824.  
  2825.  add.w d0,a0
  2826.  moveq #0,d0
  2827.  moveq #0,d1
  2828.  move.b (a1)+,d1
  2829.  
  2830.  asl.w #5,d1
  2831.  ext.l d1
  2832.  divs #100,d1
  2833.  neg.w d1
  2834.  add.w #31,d1
  2835.  
  2836.  
  2837.  tst.b Holes
  2838.  bne gotholesin
  2839.  tst.b Gouraud(pc)
  2840.  bne gotlurvelyshading
  2841.  
  2842.  move.w ObjAng,d4
  2843.  asr.w #8,d4
  2844.  asr.w #1,d4
  2845.  
  2846.  moveq #0,d2
  2847.  moveq #0,d3
  2848.  move.b (a1)+,d2 
  2849.  move.l PolyAngPtr,a1
  2850.  move.b (a1,d2.w),d2
  2851.  
  2852.  move.b d2,d3
  2853.  add.w d4,d3
  2854.  and.w #$f,d3
  2855.  and.w #$f0,d2
  2856.  add.b d3,d2
  2857.  
  2858.  move.l #PointAndPolyBrights,a1
  2859.  moveq #0,d5
  2860.  move.b (a1,d2.w),d5
  2861.  
  2862.  add.w d5,d1
  2863.  
  2864.  
  2865.  move.l #objscalecols,a1
  2866. ; move.w objbright(pc),d0
  2867. ; add.w d0,d1
  2868.  tst.w d1
  2869.  bge.s toobright
  2870.  move.w #0,d1
  2871. toobright:
  2872.  cmp.w #31,d1
  2873.  blt.s .toodark
  2874.  moveq #31,d1
  2875. .toodark:
  2876.  
  2877.  asl.w #8,d1
  2878. ; move.w (a1,d1.w*2),d1
  2879. ; asl.w #3,d1
  2880.  move.l TexturePal,a1
  2881.  add.l #256*32,a1
  2882.  lea (a1,d1.w),a1
  2883.  tst.b pregour
  2884.  bne predoglare
  2885.  
  2886. dopoly:
  2887.  
  2888.  move.w #0,offtopby
  2889.  move.l a6,a3
  2890.  adda.w a2,a3
  2891.  addq #1,a2
  2892.  move.w (a4),d1
  2893.  cmp.w objclipb,d1
  2894.  bge nodl
  2895.  move.w PolyBotTab-PolyTopTab(a4),d2
  2896.  cmp.w objclipt,d2
  2897.  ble nodl
  2898.  cmp.w objclipt,d1
  2899.  bge.s nocl
  2900.  move.w objclipt,d3
  2901.  sub.w d1,d3
  2902.  move.w d3,offtopby
  2903.  move.w objclipt,d1
  2904. nocl: 
  2905.  move.w d2,d0
  2906.  cmp.w objclipb,d2
  2907.  ble.s nocr
  2908.  move.w objclipb,d2
  2909. nocr:
  2910.  
  2911.     ; d1=top end
  2912.     ; d2=bot end
  2913.     
  2914.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  2915.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  2916.     
  2917.  move.l 2(a4),d5
  2918.  move.l 6(a4),d6
  2919.  
  2920.  sub.l d5,d3
  2921.  sub.l d6,d4
  2922.  
  2923. ; asl.w #8,d3
  2924. ; asl.w #8,d4
  2925. ; ext.l d3
  2926. ; ext.l d4
  2927.  
  2928. ; and.b #63,d5
  2929. ; and.b #63,d6
  2930. ; lsl.w #8,d6
  2931. ; move.b d5,d6    ; starting pos
  2932. ; moveq.l #0,d5
  2933. ; move.w d6,d5
  2934.  
  2935.  
  2936.  sub.w d1,d2
  2937.  ble nodl
  2938.  
  2939.  move.w #0,tstdca
  2940.  sub.w d1,d0
  2941.  tst.w offtopby
  2942.  beq.s .notofftop
  2943.  move.l d3,-(a7)
  2944.  move.l d4,-(a7)
  2945.  add.w offtopby,d0
  2946.  ext.l d0    
  2947.  muls.l offtopby-2,d3
  2948.  muls.l offtopby-2,d4
  2949.  divs.l d0,d3
  2950.  divs.l d0,d4
  2951.  
  2952.  add.l d3,d5
  2953.  add.l d4,d6
  2954.  
  2955.  move.l (a7)+,d4
  2956.  move.l (a7)+,d3
  2957. .notofftop: 
  2958.  ext.l d0
  2959.  
  2960.  divs.l d0,d3
  2961.  divs.l d0,d4
  2962.  
  2963.  add.l ontoscr(pc,d1.w*4),a3
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  ifeq CHEESEY
  2979.  move.l #$3fffff,d1
  2980.  endc
  2981.  ifne CHEESEY
  2982.  move.l #$1fffff,d1
  2983.  endc
  2984.  
  2985.  move.l d3,a5
  2986.  moveq #0,d3
  2987.  subq #1,d2
  2988. drawpol:
  2989.  and.l d1,d5
  2990.  and.l d1,d6
  2991.  
  2992.  move.l d6,d0
  2993.  asr.l #8,d0
  2994.  swap d5
  2995.  move.b d5,d0
  2996.  
  2997.  ifeq CHEESEY
  2998.  move.b (a0,d0.w*4),d3
  2999.  endc
  3000.  ifne CHEESEY
  3001.  move.b (a0,d0.w),d3
  3002.  endc
  3003.  
  3004.  swap d5
  3005.  add.l a5,d5
  3006.  add.l d4,d6
  3007.  
  3008.  
  3009.  move.b (a1,d3.w),(a3)
  3010.  adda.w #320,a3
  3011.  dbra d2,drawpol
  3012.  
  3013. ; add.w a5,d3
  3014. ; addx.l d6,d5
  3015. ; dbcs d2,drawpol2
  3016. ; dbcc d2,drawpol
  3017. ; bra.s pastit
  3018. ;drawpol2:
  3019. ; and.w d1,d5
  3020. ; move.b (a0,d5.w*4),d0
  3021. ; move.w (a1,d0.w*2),(a3)
  3022. ; adda.w #320,a3
  3023. ; add.w a5,d3
  3024. ; addx.l d4,d5
  3025. ; dbcs d2,drawpol2
  3026. ; dbcc d2,drawpol
  3027.  
  3028. pastit:
  3029.  
  3030. nodl:
  3031.  adda.w #16,a4
  3032.  dbra d7,dopoly
  3033.  
  3034.  rts
  3035.  
  3036. ontoscr:
  3037. val SET 0
  3038.  REPT 256
  3039.  dc.l val
  3040. val SET val+320
  3041.  ENDR
  3042.  
  3043. predoglare:
  3044.  move.l TexturePal,a1
  3045.  sub.w #512,a1
  3046.  
  3047. DOGLAREPOLY:
  3048.  
  3049.  move.w #0,offtopby
  3050.  move.l a6,a3
  3051.  adda.w a2,a3
  3052.  addq #1,a2
  3053.  move.w (a4),d1
  3054.  cmp.w objclipb,d1
  3055.  bge nodlGL
  3056.  move.w PolyBotTab-PolyTopTab(a4),d2
  3057.  cmp.w objclipt,d2
  3058.  ble nodlGL
  3059.  cmp.w objclipt,d1
  3060.  bge.s noclGL
  3061.  move.w objclipt,d3
  3062.  sub.w d1,d3
  3063.  move.w d3,offtopby
  3064.  move.w objclipt,d1
  3065. noclGL:
  3066.  move.w d2,d0
  3067.  cmp.w objclipb,d2
  3068.  ble.s nocrGL
  3069.  move.w objclipb,d2
  3070. nocrGL:
  3071.  
  3072.     ; d1=top end
  3073.     ; d2=bot end
  3074.     
  3075.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3076.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3077.     
  3078.  move.l 2(a4),d5
  3079.  move.l 6(a4),d6
  3080.  
  3081.  sub.l d5,d3
  3082.  sub.l d6,d4
  3083.  
  3084. ; asl.w #8,d3
  3085. ; asl.w #8,d4
  3086. ; ext.l d3
  3087. ; ext.l d4
  3088.  
  3089. ; and.b #63,d5
  3090. ; and.b #63,d6
  3091. ; lsl.w #8,d6
  3092. ; move.b d5,d6    ; starting pos
  3093. ; moveq.l #0,d5
  3094. ; move.w d6,d5
  3095.  
  3096.  
  3097.  sub.w d1,d2
  3098.  ble nodlGL
  3099.  
  3100.  move.w #0,tstdca
  3101.  sub.w d1,d0
  3102.  tst.w offtopby
  3103.  beq.s .notofftop
  3104.  move.l d3,-(a7)
  3105.  move.l d4,-(a7)
  3106.  add.w offtopby,d0
  3107.  ext.l d0    
  3108.  muls.l offtopby-2,d3
  3109.  muls.l offtopby-2,d4
  3110.  divs.l d0,d3
  3111.  divs.l d0,d4
  3112.  
  3113.  add.l d3,d5
  3114.  add.l d4,d6
  3115.  
  3116.  move.l (a7)+,d4
  3117.  move.l (a7)+,d3
  3118. .notofftop: 
  3119.  ext.l d0
  3120.  
  3121.  divs.l d0,d3
  3122.  divs.l d0,d4
  3123.  
  3124.  add.l ontoscrGL(pc,d1.w*4),a3
  3125.  
  3126.  ifeq CHEESEY
  3127.  move.l #$3fffff,d1
  3128.  endc
  3129.  ifne CHEESEY
  3130.  move.l #$1fffff,d1
  3131.  endc
  3132.  
  3133.  move.l d3,a5
  3134.  moveq #0,d3
  3135.  subq #1,d2
  3136. drawpolGL:
  3137.  and.l d1,d5
  3138.  and.l d1,d6
  3139.  
  3140.  move.l d6,d0
  3141.  asr.l #8,d0
  3142.  swap d5
  3143.  move.b d5,d0
  3144.  
  3145.  ifeq CHEESEY
  3146.  move.b (a0,d0.w*4),d3
  3147.  endc
  3148.  ifne CHEESEY
  3149.  move.b (a0,d0.w),d3
  3150.  endc
  3151.  beq.s itsblack
  3152.  
  3153.  lsl.w #8,d3
  3154.  add.w d3,d3
  3155.  move.b (a3),d3
  3156.  
  3157.  swap d5
  3158.  add.l a5,d5
  3159.  add.l d4,d6
  3160.  
  3161.  move.b (a1,d3.w),(a3)
  3162.  adda.w #320,a3
  3163.  dbra d2,drawpolGL
  3164.  
  3165. nodlGL:
  3166.  adda.w #16,a4
  3167.  dbra d7,DOGLAREPOLY
  3168.  
  3169.  rts
  3170.  
  3171. itsblack:
  3172.  swap d5
  3173.  add.l a5,d5
  3174.  add.l d4,d6 
  3175.  adda.w #320,a3
  3176.  dbra d2,drawpolGL
  3177.  adda.w #16,a4
  3178.  dbra d7,DOGLAREPOLY
  3179.  
  3180.  rts
  3181.  
  3182. ontoscrGL:
  3183. val SET 0
  3184.  REPT 256
  3185.  dc.l val
  3186. val SET val+320
  3187.  ENDR
  3188.  
  3189. tstdca: dc.l 0
  3190.  dc.w 0
  3191. offtopby: dc.w 0
  3192. LinesPtr: dc.l 0
  3193. PtsPtr: dc.l 0
  3194.  
  3195. gotlurvelyshading:
  3196.  move.l TexturePal,a1
  3197.  add.l #256*32,a1
  3198.  tst.b pregour
  3199. ; beq.s .noshiny
  3200. ; add.l #256*32,a1
  3201. ;.noshiny:
  3202. ; neg.w d1
  3203. ; add.w #14,d1
  3204. ; bge.s toobrightg
  3205. ; move.w #0,d1
  3206. ;toobrightg:
  3207. ; asl.w #8,d1
  3208. ; lea (a1,d1.w*2),a1
  3209.  
  3210. dopolyg:
  3211.  move.l d7,-(a7)
  3212.  move.w #0,offtopby
  3213.  move.l a6,a3
  3214.  adda.w a2,a3
  3215.  addq #1,a2
  3216.  move.w (a4),d1
  3217.  cmp.w objclipb,d1
  3218.  bge nodlg
  3219.  move.w PolyBotTab-PolyTopTab(a4),d2
  3220.  cmp.w objclipt(pc),d2
  3221.  ble nodlg
  3222.  cmp.w objclipt(pc),d1
  3223.  bge.s noclg
  3224.  move.w objclipt,d3
  3225.  sub.w d1,d3
  3226.  move.w d3,offtopby
  3227.  move.w objclipt(pc),d1
  3228. noclg: 
  3229.  move.w d2,d0
  3230.  cmp.w objclipb(pc),d2
  3231.  ble.s nocrg
  3232.  move.w objclipb(pc),d2
  3233. nocrg:
  3234.  
  3235.     ; d1=top end
  3236.     ; d2=bot end
  3237.     
  3238.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3239.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3240.     
  3241.  move.l 2(a4),d5
  3242.  move.l 6(a4),d6
  3243.  
  3244.  sub.l d5,d3
  3245.  sub.l d6,d4
  3246.  
  3247. ; asl.w #8,d3
  3248. ; asl.w #8,d4
  3249. ; ext.l d3
  3250. ; ext.l d4
  3251.  
  3252. ; and.b #63,d5
  3253. ; and.b #63,d6
  3254. ; lsl.w #8,d6
  3255. ; move.b d5,d6    ; starting pos
  3256. ; moveq.l #0,d5
  3257. ; move.w d6,d5
  3258.  
  3259.  
  3260.  sub.w d1,d2
  3261.  ble nodlg
  3262.  
  3263.  move.w #0,tstdca
  3264.  sub.w d1,d0
  3265.  tst.w offtopby
  3266.  beq.s .notofftop
  3267.  move.l d3,-(a7)
  3268.  move.l d4,-(a7)
  3269.  add.w offtopby,d0
  3270.  ext.l d0
  3271.  muls.l offtopby-2,d3
  3272.  muls.l offtopby-2,d4
  3273.  divs.l d0,d3
  3274.  divs.l d0,d4
  3275.  
  3276.  add.l d3,d5
  3277.  add.l d4,d6
  3278.  
  3279.  move.l (a7)+,d4
  3280.  move.l (a7)+,d3
  3281. .notofftop
  3282.  ext.l d0
  3283.  
  3284.  divs.l d0,d3
  3285.  divs.l d0,d4
  3286.  
  3287.  add.l ontoscrg(pc,d1.w*4),a3
  3288.  move.w 10+PolyBotTab-PolyTopTab(a4),d1
  3289.  move.w 10(a4),d7
  3290.  sub.w d7,d1
  3291.  asl.w #8,d7
  3292.  swap d1
  3293.  clr.w d1
  3294.  divs.l d0,d1
  3295.  
  3296.  asr.l #8,d1
  3297.  
  3298.  move.l d3,a5
  3299.  moveq #0,d3
  3300.  
  3301.  swap d2
  3302.  move.w d1,d2
  3303.  swap d2
  3304.  
  3305.  ifeq CHEESEY
  3306.  move.l #$3fffff,d1
  3307.  endc
  3308.  ifne CHEESEY
  3309.  move.l #$1fffff,d1
  3310.  endc
  3311.  
  3312.  
  3313.  subq.w #1,d2
  3314. drawpolg:
  3315.  and.l d1,d5
  3316.  and.l d1,d6
  3317.  
  3318.  move.l d6,d0
  3319.  asr.l #8,d0
  3320.  swap d5
  3321.  move.b d5,d0
  3322.  
  3323.  move.w d7,d3
  3324.  
  3325.  ifeq CHEESEY
  3326.  move.b (a0,d0.w*4),d3
  3327.  endc
  3328.  ifne CHEESEY
  3329.  move.b (a0,d0.w),d3
  3330.  endc
  3331.  
  3332.  swap d2
  3333.  swap d5
  3334.  add.l a5,d5
  3335.  add.l d4,d6
  3336.  add.w d2,d7
  3337.  swap d2
  3338.  move.b (a1,d3.w),(a3)
  3339.  adda.w #320,a3
  3340.  dbra d2,drawpolg
  3341.  
  3342. nodlg:
  3343.  
  3344.  move.l (a7)+,d7
  3345.  adda.w #16,a4
  3346.  dbra d7,dopolyg
  3347.  
  3348.  rts
  3349.  
  3350. ontoscrg:
  3351. val SET 0
  3352.  REPT 256
  3353.  dc.l val
  3354. val SET val+320
  3355.  ENDR
  3356.  
  3357.  
  3358.  
  3359.  
  3360. gotholesin:
  3361.  move.w ObjAng,d4
  3362.  asr.w #8,d4
  3363.  asr.w #1,d4
  3364.  
  3365.  moveq #0,d2
  3366.  moveq #0,d3
  3367.  move.b (a1)+,d2
  3368.  
  3369.  move.l PolyAngPtr,a1
  3370.  move.b (a1,d2.w),d2
  3371.  
  3372.  move.b d2,d3
  3373.  lsr.b #4,d3    ;d3=vertical pos
  3374.  add.b d4,d2
  3375.  and.w #$f,d2
  3376.  
  3377.  move.l #ANGLEBRIGHTS,a1
  3378.  moveq #0,d4
  3379.  moveq #0,d5
  3380.  move.b (a1,d2.w),d4    ;top
  3381.  move.b 16(a1,d2.w),d5  ;bottom
  3382.  
  3383.  sub.w d4,d5
  3384.  muls d3,d5
  3385.  divs #14,d5
  3386.  add.w d4,d5
  3387.  
  3388.  add.w d5,d1
  3389.  
  3390.  
  3391.  move.l #objscalecols,a1
  3392.  
  3393. ; move.w objbright(pc),d0
  3394. ; add.w d0,d1
  3395.  tst.w d1
  3396.  bge.s toobrighth
  3397.  move.w #0,d1
  3398. toobrighth:
  3399.  cmp.w #31,d1
  3400.  ble.s toodimh
  3401.  move.w #31,d1
  3402. toodimh:
  3403.  
  3404.  asl.w #8,d1
  3405.  
  3406. ; move.w (a1,d1.w*2),d1
  3407. ; asl.w #3,d1
  3408.  move.l TexturePal,a1
  3409.  add.l #256*32,a1
  3410.  add.w d1,a1
  3411.  tst.b pregour
  3412. ; beq.s .noshiny
  3413. ; add.l #256*32,a1
  3414. ;.noshiny:
  3415.  
  3416. dopolyh:
  3417.  move.w #0,offtopby
  3418.  move.l a6,a3
  3419.  adda.w a2,a3
  3420.  addq #1,a2
  3421.  move.w (a4),d1
  3422.  cmp.w objclipb,d1
  3423.  bge nodlh
  3424.  move.w PolyBotTab-PolyTopTab(a4),d2
  3425.  cmp.w objclipt,d2
  3426.  ble nodlh
  3427.  cmp.w objclipt,d1
  3428.  bge.s noclh
  3429.  move.w objclipt,d3
  3430.  sub.w d1,d3
  3431.  move.w d3,offtopby
  3432.  move.w objclipt,d1
  3433. noclh: 
  3434.  move.w d2,d0
  3435.  cmp.w objclipb,d2
  3436.  ble.s nocrh
  3437.  move.w objclipb,d2
  3438. nocrh:
  3439.  
  3440.     ; d1=top end
  3441.     ; d2=bot end
  3442.     
  3443.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3444.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3445.     
  3446.  move.l 2(a4),d5
  3447.  move.l 6(a4),d6
  3448.  
  3449.  sub.l d5,d3
  3450.  sub.l d6,d4
  3451.  
  3452. ; asl.w #8,d3
  3453. ; asl.w #8,d4
  3454. ; ext.l d3
  3455. ; ext.l d4
  3456.  
  3457. ; and.b #63,d5
  3458. ; and.b #63,d6
  3459. ; lsl.w #8,d6
  3460. ; move.b d5,d6    ; starting pos
  3461. ; moveq #-1,d5
  3462. ; lsr.l #1,d5
  3463. ; move.w d6,d5
  3464.  
  3465.  
  3466.  sub.w d1,d2
  3467.  ble nodlh
  3468.  
  3469.  move.w #0,tstdca
  3470.  sub.w d1,d0
  3471.  tst.w offtopby
  3472.  beq.s .notofftop
  3473.  move.l d3,-(a7)
  3474.  move.l d4,-(a7)
  3475.  add.w offtopby,d0
  3476.  ext.l d0
  3477.  muls.l offtopby-2,d3
  3478.  muls.l offtopby-2,d4
  3479.  divs.l d0,d3
  3480.  divs.l d0,d4
  3481.  
  3482.  add.l d3,d5
  3483.  add.l d4,d6
  3484.  
  3485.  move.l (a7)+,d4
  3486.  move.l (a7)+,d3
  3487. .notofftop:
  3488.  ext.l d0
  3489.  
  3490.  divs.l d0,d3
  3491.  divs.l d0,d4
  3492.  
  3493.  add.l ontoscrh(pc,d1.w*4),a3
  3494.  ifeq CHEESEY
  3495.  move.l #$3fffff,d1
  3496.  endc
  3497.  ifne CHEESEY
  3498.  move.l #$1fffff,d1
  3499.  endc
  3500.  
  3501.  move.l d3,a5
  3502.  moveq #0,d3
  3503.  subq #1,d2
  3504. drawpolh:
  3505.  and.l d1,d5
  3506.  and.l d1,d6
  3507.  
  3508.  move.l d6,d0
  3509.  asr.l #8,d0
  3510.  swap d5
  3511.  move.b d5,d0
  3512.  
  3513.  swap d5
  3514.  add.l a5,d5
  3515.  add.l d4,d6
  3516.  
  3517.  ifeq CHEESEY
  3518.  move.b (a0,d0.w*4),d3
  3519.  endc
  3520.  ifne CHEESEY
  3521.  move.b (a0,d0.w),d3
  3522.  endc
  3523.  
  3524.  beq.s .dontplot
  3525.  move.b (a1,d3.w),(a3)
  3526. .dontplot
  3527.  adda.w #320,a3
  3528.  dbra d2,drawpolh
  3529.  
  3530. pastith:
  3531.  
  3532. nodlh:
  3533.  adda.w #16,a4
  3534.  dbra d7,dopolyh
  3535.  
  3536.  rts
  3537.  
  3538. ontoscrh:
  3539. val SET 0
  3540.  REPT 256
  3541.  dc.l val
  3542. val SET val+320
  3543.  ENDR
  3544.  
  3545.  EVEN
  3546. pregour:
  3547.  dc.b 0
  3548. Gouraud:
  3549.  dc.b 0
  3550. preholes:
  3551.  dc.b 0
  3552. Holes: 
  3553.  dc.b 0
  3554.  
  3555. putinlines:
  3556.  
  3557.  move.w (a1),d0
  3558.  move.w 4(a1),d1
  3559.  
  3560.  move.w (a3,d0.w*4),d2
  3561.  move.w 2(a3,d0.w*4),d3
  3562.  move.w (a3,d1.w*4),d4
  3563.  move.w 2(a3,d1.w*4),d5
  3564.  
  3565. ; d2=x1 d3=y1 d4=x2 d5=y2
  3566.  
  3567.  cmp.w d2,d4
  3568.  beq thislineflat
  3569.  bgt thislineontop
  3570.  move.l #PolyBotTab,a4
  3571.  exg d2,d4
  3572.  exg d3,d5
  3573.  
  3574.  cmp.w rightclipb,d2
  3575.  bge thislineflat
  3576.  cmp.w leftclipb,d4
  3577.  ble thislineflat
  3578.  move.w rightclipb,d6
  3579.  sub.w d4,d6
  3580.  ble.s .clipr
  3581.  move.w #0,-(a7)
  3582.  cmp.w Right(pc),d4
  3583.  ble.s .nonewbot
  3584.  move.w d4,Right
  3585.  bra.s .nonewbot
  3586.  
  3587. .clipr
  3588.  move.w d6,-(a7)
  3589.  move.w rightclipb,Right
  3590.  sub.w #1,Right
  3591. .nonewbot:
  3592.  
  3593.  move.w #0,offleftby
  3594.  move.w d2,d6
  3595.  cmp.w leftclipb,d6
  3596.  bge .okt
  3597.  move.w leftclipb,d6
  3598.  sub.w d2,d6
  3599.  move.w d6,offleftby
  3600.  add.w d2,d6
  3601. .okt:
  3602.  
  3603.  st drawit
  3604.  add.w d6,d6
  3605.  lea (a4,d6.w*8),a4
  3606.  asr.w #1,d6
  3607.  cmp.w Left(pc),d6
  3608.  bge.s .nonewtop
  3609.  move.w d6,Left
  3610. .nonewtop
  3611.  
  3612.  sub.w d3,d5    ; dy
  3613.  swap d3
  3614.  clr.w d3    ; d2=xpos
  3615.  sub.w d2,d4    ; dx > 0
  3616.  ext.l d4
  3617.  swap d5
  3618.  clr.w d5
  3619.  divs.l d4,d5
  3620.  moveq #0,d2
  3621.  move.b 2(a1),d2
  3622.  ifne CHEESEY
  3623.  asr.w #1,d2
  3624.  endc
  3625.  
  3626.  moveq #0,d6
  3627.  move.b 6(a1),d6
  3628.  ifne CHEESEY
  3629.  asr.w #1,d6
  3630.  endc
  3631.  sub.w d6,d2
  3632.  swap d2
  3633.  swap d6
  3634.  clr.w d2
  3635.  clr.w d6    ; d6=xbitpos
  3636.  divs.l d4,d2
  3637.  move.l d5,a5    ; a5=dy constant
  3638.  move.l d2,a6    ; a6=xbitconst
  3639.  
  3640.  moveq #0,d5
  3641.  move.b 3(a1),d5
  3642.  ifne CHEESEY
  3643.  asr.w #1,d5
  3644.  endc
  3645.  moveq #0,d2
  3646.  move.b 7(a1),d2
  3647.  ifne CHEESEY
  3648.  asr.w #1,d2
  3649.  endc
  3650.  sub.w d2,d5
  3651.  swap d2
  3652.  swap d5
  3653.  clr.w d2    ; d3=ybitpos
  3654.  clr.w d5
  3655.  divs.l d4,d5
  3656.  
  3657.  add.w (a7)+,d4
  3658.  sub.w offleftby(pc),d4
  3659.  blt thislineflat
  3660.  
  3661.  tst.w offleftby(pc)
  3662.  beq.s .noneoffleft
  3663.  move.w d4,-(a7)
  3664.  move.w offleftby(pc),d4
  3665.  dbra d4,.calcnodraw
  3666.  bra .nodrawoffleft
  3667. .calcnodraw
  3668.  
  3669.  add.l a5,d3
  3670.  add.l a6,d6
  3671.  add.l d5,d2
  3672.  dbra d4,.calcnodraw
  3673. .nodrawoffleft:
  3674.  move.w (a7)+,d4
  3675. .noneoffleft:
  3676.  
  3677. .putinline:
  3678.  
  3679.  swap d3
  3680.  move.w d3,(a4)+
  3681.  swap d3
  3682.  move.l d6,(a4)+
  3683.  move.l d2,(a4)+
  3684.  addq #6,a4
  3685.  
  3686.  add.l a5,d3
  3687.  add.l a6,d6
  3688.  add.l d5,d2
  3689.  
  3690.  dbra d4,.putinline
  3691.  
  3692.  bra thislineflat
  3693.  
  3694. thislineontop:
  3695.  move.l #PolyTopTab,a4
  3696.  
  3697.  cmp.w rightclipb,d2
  3698.  bge thislineflat
  3699.  cmp.w leftclipb,d4
  3700.  ble thislineflat
  3701.  move.w rightclipb,d6
  3702.  sub.w d4,d6
  3703.  ble.s .clipr
  3704.  move.w #0,-(a7)
  3705.  cmp.w Right(pc),d4
  3706.  ble.s .nonewbot
  3707.  move.w d4,Right
  3708.  bra.s .nonewbot
  3709.  
  3710. .clipr
  3711.  move.w d6,-(a7)
  3712.  move.w rightclipb,Right
  3713.  sub.w #1,Right
  3714. .nonewbot:
  3715.  
  3716.  move.w #0,offleftby
  3717.  move.w d2,d6
  3718.  cmp.w leftclipb,d6
  3719.  bge .okt
  3720.  move.w leftclipb,d6
  3721.  sub.w d2,d6
  3722.  move.w d6,offleftby
  3723.  add.w d2,d6
  3724. .okt:
  3725.  
  3726.  st drawit
  3727.  add.w d6,d6
  3728.  lea (a4,d6.w*8),a4
  3729.  asr.w #1,d6
  3730.  cmp.w Left(pc),d6
  3731.  bge.s .nonewtop
  3732.  move.w d6,Left
  3733. .nonewtop
  3734.  
  3735.  sub.w d3,d5    ; dy
  3736.  swap d3
  3737.  clr.w d3    ; d2=xpos
  3738.  sub.w d2,d4    ; dx > 0
  3739.  ext.l d4
  3740.  swap d5
  3741.  clr.w d5
  3742.  divs.l d4,d5
  3743.  moveq #0,d2
  3744.  move.b 6(a1),d2
  3745.  ifne CHEESEY
  3746.  asr.w #1,d2
  3747.  endc
  3748.  moveq #0,d6
  3749.  move.b 2(a1),d6
  3750.  ifne CHEESEY
  3751.  asr.w #1,d6
  3752.  endc
  3753.  sub.w d6,d2
  3754.  swap d2
  3755.  swap d6
  3756.  clr.w d2
  3757.  clr.w d6    ; d6=xbitpos
  3758.  divs.l d4,d2
  3759.  move.l d5,a5    ; a5=dy constant
  3760.  move.l d2,a6    ; a6=xbitconst
  3761.  
  3762.  moveq #0,d5
  3763.  move.b 7(a1),d5
  3764.  ifne CHEESEY
  3765.  asr.w #1,d5
  3766.  endc
  3767.  moveq #0,d2
  3768.  move.b 3(a1),d2
  3769.  ifne CHEESEY
  3770.  asr.w #1,d2
  3771.  endc
  3772.  sub.w d2,d5
  3773.  swap d2
  3774.  swap d5
  3775.  clr.w d2    ; d3=ybitpos
  3776.  clr.w d5
  3777.  divs.l d4,d5
  3778.  
  3779.  add.w (a7)+,d4
  3780.  sub.w offleftby(pc),d4
  3781.  blt.s thislineflat
  3782.  
  3783.  tst.w offleftby(pc)
  3784.  beq.s .noneoffleft
  3785.  move.w d4,-(a7)
  3786.  move.w offleftby(pc),d4
  3787.  dbra d4,.calcnodraw
  3788.  bra .nodrawoffleft
  3789. .calcnodraw
  3790.  
  3791.  add.l a5,d3
  3792.  add.l a6,d6
  3793.  add.l d5,d2
  3794.  dbra d4,.calcnodraw
  3795. .nodrawoffleft:
  3796.  move.w (a7)+,d4
  3797. .noneoffleft:
  3798.  
  3799.  
  3800. .putinline:
  3801.  
  3802.  swap d3
  3803.  move.w d3,(a4)+
  3804.  swap d3
  3805.  move.l d6,(a4)+
  3806.  move.l d2,(a4)+
  3807.  addq #6,a4
  3808.  
  3809.  add.l a5,d3
  3810.  add.l a6,d6
  3811.  add.l d5,d2
  3812.  
  3813.  dbra d4,.putinline
  3814.  
  3815. thislineflat:
  3816.  addq #4,a1
  3817.  dbra d7,putinlines
  3818.  addq #4,a1
  3819.  rts
  3820.  
  3821. putingourlines:
  3822.  
  3823.  move.l #boxbrights,a2
  3824.  
  3825. piglloop:
  3826.  
  3827.  move.w (a1),d0
  3828.  move.w 4(a1),d1
  3829.  
  3830.  move.w (a3,d0.w*4),d2
  3831.  move.w 2(a3,d0.w*4),d3
  3832.  move.w (a3,d1.w*4),d4
  3833.  move.w 2(a3,d1.w*4),d5
  3834.  
  3835.  
  3836.  
  3837.  cmp.w d2,d4
  3838.  beq thislineflatgour
  3839.  bgt thislineontopgour
  3840.  move.l #PolyBotTab,a4
  3841.  exg d2,d4
  3842.  exg d3,d5
  3843.  
  3844.  cmp.w rightclipb,d2
  3845.  bge thislineflatgour
  3846.  cmp.w leftclipb,d4
  3847.  ble thislineflatgour
  3848.  move.w rightclipb,d6
  3849.  sub.w d4,d6
  3850.  ble.s .clipr
  3851.  move.w #0,-(a7)
  3852.  cmp.w Right(pc),d4
  3853.  ble.s .nonewbot
  3854.  move.w d4,Right
  3855.  bra.s .nonewbot
  3856.  
  3857. .clipr
  3858.  move.w d6,-(a7)
  3859.  move.w rightclipb,Right
  3860.  sub.w #1,Right
  3861. .nonewbot:
  3862.  
  3863.  move.w #0,offleftby
  3864.  move.w d2,d6
  3865.  cmp.w leftclipb,d6
  3866.  bge .okt
  3867.  move.w leftclipb,d6
  3868.  sub.w d2,d6
  3869.  move.w d6,offleftby
  3870.  add.w d2,d6
  3871. .okt:
  3872.  
  3873.  st drawit
  3874.  add.w d6,d6
  3875.  lea (a4,d6.w*8),a4
  3876.  asr.w #1,d6
  3877.  cmp.w Left(pc),d6
  3878.  bge.s .nonewtop
  3879.  move.w d6,Left
  3880. .nonewtop
  3881.  
  3882.  sub.w d3,d5    ; dy
  3883.  swap d3
  3884.  clr.w d3    ; d2=xpos
  3885.  sub.w d2,d4    ; dx > 0
  3886.  ext.l d4
  3887.  swap d5
  3888.  clr.w d5
  3889.  divs.l d4,d5
  3890.  moveq #0,d2
  3891.  move.b 2(a1),d2
  3892.  ifne CHEESEY
  3893.  asr.w #1,d2
  3894.  endc
  3895.  moveq #0,d6
  3896.  move.b 6(a1),d6
  3897.  ifne CHEESEY
  3898.  asr.w #1,d6
  3899.  endc
  3900.  sub.w d6,d2
  3901.  swap d2
  3902.  swap d6
  3903.  clr.w d2
  3904.  clr.w d6    ; d6=xbitpos
  3905.  divs.l d4,d2
  3906.  move.l d5,a5    ; a5=dy constant
  3907.  move.l d2,a6    ; a6=xbitconst
  3908.  
  3909.  moveq #0,d5
  3910.  move.b 3(a1),d5
  3911.  ifne CHEESEY
  3912.  asr.w #1,d5
  3913.  endc
  3914.  moveq #0,d2
  3915.  move.b 7(a1),d2
  3916.  ifne CHEESEY
  3917.  asr.w #1,d2
  3918.  endc
  3919.  
  3920.  sub.w d2,d5
  3921.  swap d2
  3922.  swap d5
  3923.  clr.w d2    ; d3=ybitpos
  3924.  clr.w d5
  3925.  divs.l d4,d5
  3926.  
  3927.  move.w (a2,d1.w*2),d1
  3928.  move.w (a2,d0.w*2),d0
  3929.  sub.w d1,d0
  3930.  swap d0
  3931.  swap d1
  3932.  clr.w d0
  3933.  clr.w d1
  3934.  divs.l d4,d0
  3935.  
  3936.  add.w (a7)+,d4
  3937.  sub.w offleftby(pc),d4
  3938.  blt thislineflatgour
  3939.  
  3940.  tst.w offleftby(pc)
  3941.  beq.s .noneoffleft
  3942.  move.w d4,-(a7)
  3943.  move.w offleftby(pc),d4
  3944.  dbra d4,.calcnodraw
  3945.  bra .nodrawoffleft
  3946. .calcnodraw
  3947.  add.l d0,d1
  3948.  add.l a5,d3
  3949.  add.l a6,d6
  3950.  add.l d5,d2
  3951.  dbra d4,.calcnodraw
  3952. .nodrawoffleft:
  3953.  move.w (a7)+,d4
  3954. .noneoffleft:
  3955.  
  3956. .putinline:
  3957.  
  3958.  swap d3
  3959.  move.w d3,(a4)+
  3960.  swap d3
  3961.  move.l d6,(a4)+
  3962.  move.l d2,(a4)+
  3963.  swap d1
  3964.  move.w d1,(a4)
  3965.  addq #6,a4
  3966.  swap d1
  3967.  
  3968.  add.l d0,d1
  3969.  add.l a5,d3
  3970.  add.l a6,d6
  3971.  add.l d5,d2
  3972.  
  3973.  dbra d4,.putinline
  3974.  
  3975.  bra thislineflatgour
  3976.  
  3977. thislineontopgour:
  3978.  move.l #PolyTopTab,a4
  3979.  
  3980.  cmp.w rightclipb,d2
  3981.  bge thislineflatgour
  3982.  cmp.w leftclipb,d4
  3983.  ble thislineflatgour
  3984.  move.w rightclipb,d6
  3985.  sub.w d4,d6
  3986.  ble.s .clipr
  3987.  move.w #0,-(a7)
  3988.  cmp.w Right(pc),d4
  3989.  ble.s .nonewbot
  3990.  move.w d4,Right
  3991.  bra.s .nonewbot
  3992.  
  3993. .clipr
  3994.  move.w d6,-(a7)
  3995.  move.w rightclipb,Right
  3996.  sub.w #1,Right
  3997. .nonewbot:
  3998.  
  3999.  move.w #0,offleftby
  4000.  move.w d2,d6
  4001.  cmp.w leftclipb,d6
  4002.  bge .okt
  4003.  move.w leftclipb,d6
  4004.  sub.w d2,d6
  4005.  move.w d6,offleftby
  4006.  add.w d2,d6
  4007. .okt:
  4008.  
  4009.  st drawit
  4010.  add.w d6,d6
  4011.  lea (a4,d6.w*8),a4
  4012.  asr.w #1,d6
  4013.  cmp.w Left(pc),d6
  4014.  bge.s .nonewtop
  4015.  move.w d6,Left
  4016. .nonewtop
  4017.  
  4018.  sub.w d3,d5    ; dy
  4019.  swap d3
  4020.  clr.w d3    ; d2=xpos
  4021.  sub.w d2,d4    ; dx > 0
  4022.  ext.l d4
  4023.  swap d5
  4024.  clr.w d5
  4025.  divs.l d4,d5
  4026.  moveq #0,d2
  4027.  move.b 6(a1),d2
  4028.  ifne CHEESEY
  4029.  asr.w #1,d2
  4030.  endc
  4031.  moveq #0,d6
  4032.  move.b 2(a1),d6
  4033.  ifne CHEESEY
  4034.  asr.w #1,d6
  4035.  endc
  4036.  sub.w d6,d2
  4037.  swap d2
  4038.  swap d6
  4039.  clr.w d2
  4040.  clr.w d6    ; d6=xbitpos
  4041.  divs.l d4,d2
  4042.  move.l d5,a5    ; a5=dy constant
  4043.  move.l d2,a6    ; a6=xbitconst
  4044.  
  4045.  moveq #0,d5
  4046.  move.b 7(a1),d5
  4047.  ifne CHEESEY
  4048.  asr.w #1,d5
  4049.  endc
  4050.  moveq #0,d2
  4051.  move.b 3(a1),d2
  4052.  ifne CHEESEY
  4053.  asr.w #1,d2
  4054.  endc
  4055.  
  4056.  sub.w d2,d5
  4057.  swap d2
  4058.  swap d5
  4059.  clr.w d2    ; d3=ybitpos
  4060.  clr.w d5
  4061.  divs.l d4,d5
  4062.  
  4063.  move.w (a2,d1.w*2),d1
  4064.  move.w (a2,d0.w*2),d0
  4065.  sub.w d0,d1
  4066.  swap d0
  4067.  swap d1
  4068.  clr.w d0
  4069.  clr.w d1
  4070.  divs.l d4,d1
  4071.  
  4072.  add.w (a7)+,d4
  4073.  sub.w offleftby(pc),d4
  4074.  blt.s thislineflatgour
  4075.  
  4076.  tst.w offleftby(pc)
  4077.  beq.s .noneoffleft
  4078.  move.w d4,-(a7)
  4079.  move.w offleftby(pc),d4
  4080.  dbra d4,.calcnodraw
  4081.  bra .nodrawoffleft
  4082. .calcnodraw
  4083.  add.l d1,d0
  4084.  add.l a5,d3
  4085.  add.l a6,d6
  4086.  add.l d5,d2
  4087.  dbra d4,.calcnodraw
  4088. .nodrawoffleft:
  4089.  move.w (a7)+,d4
  4090. .noneoffleft:
  4091.  
  4092.  
  4093. .putinline:
  4094.  
  4095.  swap d3
  4096.  move.w d3,(a4)+
  4097.  swap d3
  4098.  move.l d6,(a4)+
  4099.  move.l d2,(a4)+
  4100.  swap d0
  4101.  move.w d0,(a4)
  4102.  addq #6,a4
  4103.  swap d0
  4104.  
  4105.  add.l d1,d0
  4106.  add.l a5,d3
  4107.  add.l a6,d6
  4108.  add.l d5,d2
  4109.  
  4110.  dbra d4,.putinline
  4111.  
  4112. thislineflatgour:
  4113.  addq #4,a1
  4114.  dbra d7,piglloop
  4115.  addq #4,a1
  4116.  rts
  4117.  
  4118. offleftby: dc.w 0
  4119. Left: dc.w 0
  4120. Right: dc.w 0
  4121.  
  4122. PointAndPolyBrights:
  4123.  ds.l 4*16
  4124.  
  4125.  
  4126. POINTER_TO_POINTERS: dc.l 0
  4127. START_OF_OBJ: dc.l 0
  4128. num_points: dc.w 0
  4129.  
  4130. POLYOBJECTS:
  4131.  ds.l 40
  4132. ; dc.l Spider_des
  4133. ; dc.l Medi_des
  4134. ; dc.l Exit_des
  4135. ; dc.l Crate_des
  4136. ; dc.l Terminal_des
  4137. ; dc.l Blue_des
  4138. ; dc.l Green_des
  4139. ; dc.l Red_des
  4140. ; dc.l Yellow_des
  4141. ; dc.l Gas_des
  4142. ; dc.l Torch_des
  4143.  
  4144. Spider_des:
  4145. ; incbin "ab3:vectobj/robot"
  4146.  incbin "ab3:vectobj/walllamp"
  4147.  
  4148. ;Medi_des:
  4149. ; incbin "ab3:vectobj/testgrill"
  4150. ;Exit_des:
  4151. ; incbin "ab3:vectobj/exitsign
  4152. ;Crate_des:
  4153. ; incbin "ab3:vectobj/droid"
  4154. ;Terminal_des:
  4155. ; incbin "ab3:includes/terminal.vec"
  4156. ;Blue_des:
  4157. ; incbin "ab3:vectobj/blueind"
  4158. ;Green_des:
  4159. ; incbin "ab3:vectobj/Greenind"
  4160. ;Red_des:
  4161. ; incbin "ab3:vectobj/Redind"
  4162. ;Yellow_des:
  4163. ; incbin "ab3:vectobj/yellowind"
  4164. ;Gas_des:
  4165. ; incbin "ab3:vectobj/gaspipe"
  4166. ;Torch_des:
  4167. ; incbin "ab3:vectobj/torch"
  4168.  
  4169. boxonscr:
  4170.  ds.l 250*2
  4171. boxrot: ds.l 3*250
  4172.  
  4173. boxbrights: 
  4174.     ds.w 250
  4175.  
  4176. boxang: dc.w 0 
  4177.  
  4178.  ds.w 320*4
  4179. PolyBotTab: ds.w 320*8
  4180.  ds.w 320*4
  4181. PolyTopTab: ds.w 320*8
  4182.  ds.w 320*4
  4183.  
  4184. offset:
  4185.  dc.w 0
  4186. ;timer:
  4187.  dc.w 0
  4188.  
  4189. Objects:
  4190. ; Lookup table for OBJECT GRAPHIC TYPE
  4191. ; in object data (offset 8)
  4192. ;0
  4193.  dc.l ALIEN_WAD,ALIEN_PTR,ALIEN_FRAMES,ALIEN_PAL
  4194. ;1
  4195.  dc.l PICKUPS_WAD,PICKUPS_PTR,PICKUPS_FRAMES,PICKUPS_PAL
  4196. ;2
  4197.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,BIGBULLET_FRAMES,BIGBULLET_PAL
  4198. ;3
  4199.  dc.l UGLYMONSTER_WAD,UGLYMONSTER_PTR,UGLYMONSTER_FRAMES,UGLYMONSTER_PAL
  4200. ;4
  4201.  dc.l FLYINGMONSTER_WAD,FLYINGMONSTER_PTR,FLYINGMONSTER_FRAMES,FLYINGMONSTER_PAL
  4202. ;5
  4203.  dc.l KEYS_WAD,KEYS_PTR,KEYS_FRAMES,KEYS_PAL
  4204. ;6
  4205.  dc.l ROCKETS_WAD,ROCKETS_PTR,ROCKETS_FRAMES,ROCKETS_PAL
  4206. ;7
  4207.  dc.l BARREL_WAD,BARREL_PTR,BARREL_FRAMES,BARREL_PAL
  4208. ;8
  4209.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,EXPLOSION_FRAMES,EXPLOSION_PAL
  4210. ;9
  4211.  dc.l GUNS_WAD,GUNS_PTR,GUNS_FRAMES,GUNS_PAL
  4212. ;10:
  4213.  dc.l MARINE_WAD,MARINE_PTR,MARINE_FRAMES,MARINE_PAL
  4214. ;11:
  4215.  dc.l BIGALIEN_WAD,BIGALIEN_PTR,BIGALIEN_FRAMES,BIGALIEN_PAL
  4216. ;12:
  4217.  dc.l 0,0,LAMPS_FRAMES,LAMPS_PAL
  4218. ;13:
  4219.  dc.l 0,0,WORM_FRAMES,WORM_PAL
  4220. ;14:
  4221.  dc.l 0,0,BIGCLAWS_FRAMES,BIGCLAWS_PAL
  4222. ;15:
  4223.  dc.l 0,0,TREE_FRAMES,TREE_PAL
  4224. ;16:
  4225.  dc.l 0,0,TOUGHMARINE_FRAMES,TOUGHMARINE_PAL
  4226. ;17:
  4227.  dc.l 0,0,FLAMEMARINE_FRAMES,FLAMEMARINE_PAL
  4228. ;18:
  4229.  dc.l 0,0,GLARE_FRAMES,0
  4230.  ds.l 4*20
  4231.  
  4232. GLARE_FRAMES:
  4233.  dc.w 0,0
  4234.  dc.w 32*4,0
  4235.  dc.w 32*4*2,0
  4236.  dc.w 32*4*3,0
  4237.  
  4238.  dc.w 0,32
  4239.  dc.w 32*4,32
  4240.  dc.w 32*4*2,32
  4241.  dc.w 32*4*3,32
  4242.  
  4243. ALIEN_WAD:
  4244. ; incbin "ALIEN2.wad"
  4245. ALIEN_PTR:
  4246. ; incbin "ALIEN2.ptr"
  4247. ALIEN_FRAMES:
  4248. ; walking=0-3
  4249.  dc.w 0,0
  4250.  dc.w 64*4,0 
  4251.  dc.w 64*4*2,0
  4252.  dc.w 64*4*3,0
  4253.  dc.w 64*4*4,0
  4254.  dc.w 64*4*5,0
  4255.  dc.w 64*4*6,0
  4256.  dc.w 64*4*7,0
  4257.  dc.w 64*4*8,0
  4258.  dc.w 64*4*9,0
  4259.  dc.w 64*4*10,0
  4260.  dc.w 64*4*11,0
  4261.  dc.w 64*4*12,0
  4262.  dc.w 64*4*13,0
  4263.  dc.w 64*4*14,0
  4264.  dc.w 64*4*15,0
  4265. ;Exploding=16-31
  4266.  dc.w 4*(64*16),0
  4267.  dc.w 4*(64*16+16),0
  4268.  dc.w 4*(64*16+32),0
  4269.  dc.w 4*(64*16+48),0
  4270.  
  4271.  dc.w 4*(64*16),16
  4272.  dc.w 4*(64*16+16),16
  4273.  dc.w 4*(64*16+32),16
  4274.  dc.w 4*(64*16+48),16
  4275.  
  4276.  dc.w 4*(64*16),32
  4277.  dc.w 4*(64*16+16),32
  4278.  dc.w 4*(64*16+32),32
  4279.  dc.w 4*(64*16+48),32
  4280.  
  4281.  dc.w 4*(64*16),48
  4282.  dc.w 4*(64*16+16),48
  4283.  dc.w 4*(64*16+32),48
  4284.  dc.w 4*(64*16+48),48
  4285. ;dying=32-33
  4286.  dc.w 64*4*17,0
  4287.  dc.w 64*4*18,0
  4288.  
  4289.  
  4290. ALIEN_PAL:
  4291. ; incbin "alien2.256pal"
  4292.  
  4293. PICKUPS_WAD:
  4294. ; incbin "Pickups.wad"
  4295. PICKUPS_PTR:
  4296. ; incbin "PICKUPS.ptr"
  4297. PICKUPS_FRAMES:
  4298. ; medikit=0
  4299.  dc.w 0,0
  4300. ; big gun=1
  4301.  dc.w 0,32
  4302. ; bullet=2
  4303.  dc.w 64*4,32
  4304. ; Ammo=3
  4305.  dc.w 32*4,0 
  4306. ;battery=4
  4307.  dc.w 64*4,0
  4308. ;Rockets=5
  4309.  dc.w 192*4,0
  4310. ;gunpop=6-16
  4311.  dc.w 128*4,0
  4312.  dc.w (128+16)*4,0
  4313.  dc.w (128+32)*4,0
  4314.  dc.w (128+48)*4,0
  4315.  dc.w 128*4,16
  4316.  dc.w (128+16)*4,16
  4317.  dc.w (128+32)*4,16
  4318.  dc.w (128+48)*4,16
  4319.  dc.w 128*4,32
  4320.  dc.w (128+16)*4,32
  4321.  dc.w (128+32)*4,32
  4322.  dc.w (64+16)*4,32
  4323.  dc.w (64*4),48
  4324.  dc.w (64+16)*4,48
  4325.  
  4326. ; RocketLauncher=20
  4327.  dc.w (64+32)*4,0
  4328.  
  4329. ;grenade = 21-24
  4330.  dc.w 64*4,32
  4331.  dc.w (64+16)*4,32
  4332.  dc.w (64+16)*4,48
  4333.  dc.w 64*4,48
  4334.  
  4335. ; shotgun = 25
  4336.  dc.w 128*4,32
  4337.  
  4338. ; grenade launcher =26
  4339.  dc.w 256*4,0
  4340.  
  4341. ; shotgun shells*4=27
  4342.  dc.w 64*3*4,32
  4343. ; shotgun shells*20=28
  4344.  dc.w (64*3+32)*4,0
  4345. ; grenade clip=29
  4346.  dc.w (64*3+32)*4,32
  4347.  
  4348.  
  4349. PICKUPS_PAL:
  4350. ; incbin "PICKUPS.256pal"
  4351.  
  4352. BIGBULLET_WAD:
  4353. ; incbin "bigbullet.wad"
  4354. BIGBULLET_PTR:
  4355. ; incbin "bigbullet.ptr"
  4356. BIGBULLET_FRAMES:
  4357.  dc.w 0,0
  4358.  dc.w 0,32
  4359.  dc.w 32*4,0
  4360.  dc.w 32*4,32
  4361.  dc.w 64*4,0
  4362.  dc.w 64*4,32
  4363.  dc.w 96*4,0
  4364.  dc.w 96*4,32
  4365.  
  4366.  dc.w 128*4,0
  4367.  dc.w 128*4,32
  4368.  dc.w 32*5*4,0
  4369.  dc.w 32*5*4,32
  4370.  dc.w 32*6*4,0
  4371.  dc.w 32*6*4,32
  4372.  dc.w 32*7*4,0
  4373.  dc.w 32*7*4,32
  4374.  dc.w 32*8*4,0
  4375.  dc.w 32*8*4,32
  4376.  dc.w 32*9*4,0
  4377.  dc.w 32*9*4,32
  4378. BIGBULLET_PAL
  4379. ; incbin "bigbullet.256pal"
  4380.  
  4381. EXPLOSION_FRAMES:
  4382.  dc.w 0,0
  4383.  dc.w 64*4,0
  4384.  dc.w 64*4*2,0
  4385.  dc.w 64*4*3,0
  4386.  dc.w 64*4*4,0
  4387.  dc.w 64*4*5,0
  4388.  dc.w 64*4*6,0
  4389.  dc.w 64*4*7,0
  4390.  dc.w 64*4*8,0
  4391.  
  4392. EXPLOSION_PAL
  4393. ; incbin "explosion.256pal"
  4394.  
  4395. UGLYMONSTER_WAD:
  4396. ; incbin "uglymonster.wad"
  4397. UGLYMONSTER_PTR:
  4398. ; incbin "uglymonster.ptr"
  4399. UGLYMONSTER_FRAMES:
  4400.  dc.w 0,0
  4401. UGLYMONSTER_PAL:
  4402. ; incbin "uglymonster.pal"
  4403.  
  4404. FLYINGMONSTER_WAD:
  4405. ; incbin "FLYINGalien.wad"
  4406. FLYINGMONSTER_PTR:
  4407. ; incbin "FLYINGalien.ptr"
  4408. FLYINGMONSTER_FRAMES:
  4409.  dc.w 0,0
  4410.  dc.w 64*4,0 
  4411.  dc.w 64*4*2,0 
  4412.  dc.w 64*4*3,0 
  4413.  dc.w 64*4*4,0 
  4414.  dc.w 64*4*5,0 
  4415.  dc.w 64*4*6,0 
  4416.  dc.w 64*4*7,0 
  4417.  dc.w 64*4*8,0 
  4418.  dc.w 64*4*9,0 
  4419.  dc.w 64*4*10,0 
  4420.  dc.w 64*4*11,0 
  4421.  dc.w 64*4*12,0 
  4422.  dc.w 64*4*13,0 
  4423.  dc.w 64*4*14,0 
  4424.  dc.w 64*4*15,0 
  4425.  dc.w 64*4*16,0 
  4426.  dc.w 64*4*17,0 
  4427.  dc.w 64*4*18,0 
  4428.  dc.w 64*4*19,0 
  4429.  dc.w 64*4*20,0 
  4430.  
  4431. FLYINGMONSTER_PAL:
  4432. ; incbin "FLYINGalien.256pal"
  4433.  
  4434. KEYS_WAD:
  4435. ; incbin "keys.wad"
  4436. KEYS_PTR:
  4437. ; incbin "KEYS.PTR"
  4438. KEYS_FRAMES:
  4439.  dc.w 0,0
  4440.  dc.w 0,32
  4441.  dc.w 32*4,0
  4442.  dc.w 32*4,32
  4443. KEYS_PAL:
  4444. ; incbin "keys.256pal"
  4445.  
  4446. ROCKETS_WAD:
  4447. ; incbin "ROCKETS.wad"
  4448. ROCKETS_PTR:
  4449. ; incbin "ROCKETS.ptr"
  4450. ROCKETS_FRAMES:
  4451. ;rockets=0 to 3
  4452.  dc.w 0,0
  4453.  dc.w 32*4,0
  4454.  dc.w 0,32
  4455.  dc.w 32*4,32
  4456.  
  4457. ;Green bullets = 4 to 7
  4458.  dc.w 64*4,0
  4459.  dc.w (64+32)*4,0
  4460.  dc.w 64*4,32
  4461.  dc.w (64+32)*4,32
  4462.  
  4463. ;Blue Bullets = 8 to 11
  4464.  dc.w 128*4,0
  4465.  dc.w (128+32)*4,0
  4466.  dc.w 128*4,32
  4467.  dc.w (128+32)*4,32
  4468.  
  4469.  
  4470. ROCKETS_PAL:
  4471. ; incbin "ROCKETS.256pal"
  4472.  
  4473. BARREL_WAD:
  4474. ; incbin "BARREL.wad"
  4475. BARREL_PTR:
  4476. ; incbin "BARREL.ptr"
  4477. BARREL_FRAMES:
  4478.  dc.w 0,0
  4479.  
  4480. BARREL_PAL: 
  4481. ;incbin "BARREL.256pal"
  4482.  
  4483. GUNS_WAD:
  4484. ; incbin "guns.wad"
  4485. GUNS_PTR:
  4486. ; incbin "GUNS.PTR"
  4487. GUNS_FRAMES:
  4488.  
  4489.  dc.w 96*4*20,0
  4490.  dc.w 96*4*21,0
  4491.  dc.w 96*4*22,0
  4492.  dc.w 96*4*23,0
  4493.  
  4494.  dc.w 96*4*4,0
  4495.  dc.w 96*4*5,0
  4496.  dc.w 96*4*6,0
  4497.  dc.w 96*4*7,0
  4498.  
  4499.  dc.w 96*4*16,0
  4500.  dc.w 96*4*17,0
  4501.  dc.w 96*4*18,0
  4502.  dc.w 96*4*19,0
  4503.  
  4504.  dc.w 96*4*12,0
  4505.  dc.w 96*4*13,0
  4506.  dc.w 96*4*14,0
  4507.  dc.w 96*4*15,0
  4508.  
  4509.  dc.w 96*4*24,0
  4510.  dc.w 96*4*25,0
  4511.  dc.w 96*4*26,0
  4512.  dc.w 96*4*27,0
  4513.  
  4514.  dc.w 0,0
  4515.  dc.w 0,0
  4516.  dc.w 0,0
  4517.  dc.w 0,0
  4518.  
  4519.  dc.w 0,0
  4520.  dc.w 0,0
  4521.  dc.w 0,0
  4522.  dc.w 0,0
  4523.  
  4524.  dc.w 96*4*0,0
  4525.  dc.w 96*4*1,0
  4526.  dc.w 96*4*2,0
  4527.  dc.w 96*4*3,0 
  4528.  
  4529. GUNS_PAL:
  4530. ; incbin "newgunsinhand.256pal"
  4531.  
  4532. MARINE_WAD:
  4533. ; incbin "newMarine.wad"
  4534. MARINE_PTR:
  4535. ; incbin "newMARINE.ptr"
  4536. MARINE_FRAMES:
  4537.  dc.w 0,0
  4538.  dc.w 64*4,0
  4539.  dc.w (64*2)*4,0
  4540.  dc.w (64*3)*4,0
  4541.  dc.w (64*4)*4,0
  4542.  dc.w (64*5)*4,0
  4543.  dc.w (64*6)*4,0
  4544.  dc.w (64*7)*4,0
  4545.  dc.w (64*8)*4,0
  4546.  dc.w (64*9)*4,0
  4547.  dc.w (64*10)*4,0
  4548.  dc.w (64*11)*4,0
  4549.  dc.w (64*12)*4,0
  4550.  dc.w (64*13)*4,0
  4551.  dc.w (64*14)*4,0
  4552.  dc.w (64*15)*4,0
  4553.  dc.w (64*16)*4,0
  4554.  dc.w (64*17)*4,0
  4555.  dc.w (64*18)*4,0
  4556. MARINE_PAL:
  4557. ; incbin "newmarine.256pal"
  4558. TOUGHMARINE_FRAMES:
  4559.  dc.w 0,0
  4560.  dc.w 64*4,0
  4561.  dc.w (64*2)*4,0
  4562.  dc.w (64*3)*4,0
  4563.  dc.w (64*4)*4,0
  4564.  dc.w (64*5)*4,0
  4565.  dc.w (64*6)*4,0
  4566.  dc.w (64*7)*4,0
  4567.  dc.w (64*8)*4,0
  4568.  dc.w (64*9)*4,0
  4569.  dc.w (64*10)*4,0
  4570.  dc.w (64*11)*4,0
  4571.  dc.w (64*12)*4,0
  4572.  dc.w (64*13)*4,0
  4573.  dc.w (64*14)*4,0
  4574.  dc.w (64*15)*4,0
  4575.  dc.w (64*16)*4,0
  4576.  dc.w (64*17)*4,0
  4577.  dc.w (64*18)*4,0
  4578. TOUGHMARINE_PAL:
  4579. ; incbin "toughmutant.256pal"
  4580. FLAMEMARINE_FRAMES:
  4581.  dc.w 0,0
  4582.  dc.w 64*4,0
  4583.  dc.w (64*2)*4,0
  4584.  dc.w (64*3)*4,0
  4585.  dc.w (64*4)*4,0
  4586.  dc.w (64*5)*4,0
  4587.  dc.w (64*6)*4,0
  4588.  dc.w (64*7)*4,0
  4589.  dc.w (64*8)*4,0
  4590.  dc.w (64*9)*4,0
  4591.  dc.w (64*10)*4,0
  4592.  dc.w (64*11)*4,0
  4593.  dc.w (64*12)*4,0
  4594.  dc.w (64*13)*4,0
  4595.  dc.w (64*14)*4,0
  4596.  dc.w (64*15)*4,0
  4597.  dc.w (64*16)*4,0
  4598.  dc.w (64*17)*4,0
  4599.  dc.w (64*18)*4,0
  4600. FLAMEMARINE_PAL:
  4601. ; incbin "flamemutant.256pal"
  4602.  
  4603.  
  4604. BIGALIEN_WAD:
  4605. ; incbin "BIGSCARYALIEN.wad"
  4606. BIGALIEN_PTR:
  4607. ; incbin "BIGSCARYALIEN.ptr"
  4608. BIGALIEN_FRAMES:
  4609. ; walking=0-3
  4610.  dc.w 0,0
  4611.  dc.w 128*4,0
  4612.  dc.w 128*4*2,0
  4613.  dc.w 128*4*3,0
  4614. BIGALIEN_PAL:
  4615. ; incbin "BIGSCARYALIEN.256pal"
  4616.  
  4617. LAMPS_FRAMES:
  4618.  dc.w 0,0
  4619. LAMPS_PAL:
  4620. ; incbin "LAMPS.256pal"
  4621.  
  4622. WORM_FRAMES:
  4623.  dc.w 0,0
  4624.  dc.w 90*4,0
  4625.  dc.w 90*4*2,0
  4626.  dc.w 90*4*3,0
  4627.  dc.w 90*4*4,0
  4628.  dc.w 90*4*5,0
  4629.  dc.w 90*4*6,0
  4630.  dc.w 90*4*7,0
  4631.  dc.w 90*4*8,0
  4632.  dc.w 90*4*9,0
  4633.  dc.w 90*4*10,0
  4634.  dc.w 90*4*11,0
  4635.  dc.w 90*4*12,0
  4636.  dc.w 90*4*13,0
  4637.  dc.w 90*4*14,0
  4638.  dc.w 90*4*15,0
  4639.  dc.w 90*4*16,0
  4640.  dc.w 90*4*17,0
  4641.  dc.w 90*4*18,0
  4642.  dc.w 90*4*19,0
  4643.  dc.w 90*4*20,0
  4644. WORM_PAL:
  4645. ; incbin "worm.256pal"
  4646.  
  4647. BIGCLAWS_FRAMES:
  4648.  dc.w 0,0
  4649.  dc.w 128*4,0
  4650.  dc.w 128*4*2,0
  4651.  dc.w 128*4*3,0
  4652.  dc.w 128*4*4,0
  4653.  dc.w 128*4*5,0
  4654.  dc.w 128*4*6,0
  4655.  dc.w 128*4*7,0
  4656.  dc.w 128*4*8,0
  4657.  dc.w 128*4*9,0
  4658.  dc.w 128*4*10,0
  4659.  dc.w 128*4*11,0
  4660.  dc.w 128*4*12,0
  4661.  dc.w 128*4*13,0
  4662.  dc.w 128*4*14,0
  4663.  dc.w 128*4*15,0
  4664.  dc.w 128*4*16,0
  4665.  dc.w 128*4*17,0
  4666. BIGCLAWS_PAL:
  4667. ; incbin "bigclaws.256pal"
  4668.  
  4669. TREE_FRAMES:
  4670.  dc.w 0,0
  4671.  dc.w 64*4,0
  4672.  dc.w 64*2*4,0
  4673.  dc.w 64*3*4,0
  4674.  
  4675.  dc.w 0,0
  4676.  dc.w 64*4,0
  4677.  dc.w 64*2*4,0
  4678.  dc.w 64*3*4,0
  4679.  
  4680.  
  4681.  dc.w 0,0
  4682.  dc.w 64*4,0
  4683.  dc.w 64*2*4,0
  4684.  dc.w 64*3*4,0
  4685.  
  4686.  
  4687.  dc.w 0,0
  4688.  dc.w 64*4,0
  4689.  dc.w 64*2*4,0
  4690.  dc.w 64*3*4,0
  4691.  
  4692.  dc.w 0,0
  4693.  dc.w 0,0
  4694.  
  4695.  dc.w 32*8*4,0
  4696.  dc.w 32*9*4,0
  4697.  dc.w 32*10*4,0
  4698.  dc.w 32*11*4,0
  4699.  
  4700. TREE_PAL:
  4701. ; incbin "tree.256pal"
  4702.  
  4703.  
  4704.  even
  4705. ObAdds:
  4706. ; incbin "ALIEN1.ptr"
  4707. objpal:
  4708. ; incbin "ALIEN1.256pal"
  4709. TextureMaps:
  4710.  dc.l 0
  4711. ; incbin "ab3:includes/newTexturemaps"
  4712. TexturePal:
  4713.  dc.l 0
  4714. ; incbin "ab3:includes/texture256pal"
  4715.  
  4716. testval: dc.l 0